diff --git a/backend/tests/Feature/User/EloquentUserRepositoryTest.php b/backend/tests/Feature/User/EloquentUserRepositoryTest.php new file mode 100644 index 0000000..207523f --- /dev/null +++ b/backend/tests/Feature/User/EloquentUserRepositoryTest.php @@ -0,0 +1,48 @@ +create(new CreateUserDto( + email: new EmailAddress('Founder@EXAMPLE.COM'), + )); + + $this->assertGreaterThan(0, $user->getId()); + $this->assertSame( + 'Founder@example.com', + $user->getEmail()->value(), + ); + $this->assertDatabaseHas('users', [ + 'id' => $user->getId(), + 'email' => 'Founder@example.com', + ]); + + $foundUser = $repository->find($user->getId()); + + $this->assertNotNull($foundUser); + $this->assertSame($user->getId(), $foundUser->getId()); + $this->assertSame( + $user->getEmail()->value(), + $foundUser->getEmail()->value(), + ); + } + + public function test_it_returns_null_for_an_unknown_user(): void + { + $repository = app(UserRepository::class); + + $this->assertNull($repository->find(999)); + } +} diff --git a/backend/tests/Unit/Shared/ValueObject/EmailAddressTest.php b/backend/tests/Unit/Shared/ValueObject/EmailAddressTest.php new file mode 100644 index 0000000..c47b3e4 --- /dev/null +++ b/backend/tests/Unit/Shared/ValueObject/EmailAddressTest.php @@ -0,0 +1,27 @@ +expectException(InvalidArgumentException::class); + $this->expectExceptionMessage( + 'Invalid email address: invalid-email', + ); + + new EmailAddress('invalid-email'); + } + + public function test_it_trims_and_normalizes_the_domain(): void + { + $email = new EmailAddress(' Founder@EXAMPLE.COM '); + + $this->assertSame('Founder@example.com', $email->value()); + } +} diff --git a/backend/tests/Unit/User/UserTest.php b/backend/tests/Unit/User/UserTest.php new file mode 100644 index 0000000..0ac8d53 --- /dev/null +++ b/backend/tests/Unit/User/UserTest.php @@ -0,0 +1,19 @@ +assertSame(42, $user->getId()); + $this->assertSame($email, $user->getEmail()); + } +}