diff --git a/tests/Unit/User/FakeUserRepositoryTest.php b/tests/Unit/User/FakeUserRepositoryTest.php new file mode 100644 index 0000000..20d8b73 --- /dev/null +++ b/tests/Unit/User/FakeUserRepositoryTest.php @@ -0,0 +1,50 @@ +create(new CreateUserDto( + email: new EmailAddress('test@test.com'), + )); + + $user = $userRepo->findByEmail(new EmailAddress('test@test.com')); + + $this->assertInstanceOf(User::class, $user); + $this->assertEquals('test@test.com', (string) $user->getEmail()); + } + + public function test_find_by_email_returns_null_when_not_found(): void + { + $userRepo = new FakeUserRepository(); + + $user = $userRepo->findByEmail( + new EmailAddress('missing@test.com') + ); + + $this->assertNull($user); + } + + public function test_find_by_email_returns_fresh_instance(): void + { + $userRepo = new FakeUserRepository(); + $created = $userRepo->create(new CreateUserDto( + email: new EmailAddress('test@test.com'), + )); + + $fetched = $userRepo->findByEmail( + new EmailAddress('test@test.com') + ); + + $this->assertNotSame($created, $fetched); + } +}