diff --git a/backend/tests/Unit/User/UserTest.php b/backend/tests/Unit/User/UserTest.php new file mode 100644 index 0000000..61852cd --- /dev/null +++ b/backend/tests/Unit/User/UserTest.php @@ -0,0 +1,64 @@ +assertSame(7, $user->getId()); + $this->assertSame('alice@example.com', $user->getEmail()->value()); + $this->assertSame('alice', $user->getDisplayName()); + $this->assertSame('hash', $user->getPasswordHash()); + $this->assertTrue($user->isAdmin()); + $this->assertSame($confirmedAt, $user->getEmailConfirmedAt()); + } + + public function test_user_email_confirmed_at_can_be_null(): void + { + $user = new User( + id: 1, + email: new EmailAddress('bob@example.com'), + displayName: 'bob', + passwordHash: '', + isAdmin: false, + emailConfirmedAt: null, + ); + + $this->assertNull($user->getEmailConfirmedAt()); + $this->assertFalse($user->isEmailConfirmed()); + } + + public function test_email_confirmed_when_timestamp_present(): void + { + $user = new User( + id: 1, + email: new EmailAddress('bob@example.com'), + displayName: 'bob', + passwordHash: 'hash', + isAdmin: false, + emailConfirmedAt: new DateTimeImmutable('2026-05-01T00:00:00Z'), + ); + + $this->assertTrue($user->isEmailConfirmed()); + } +}