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()); } }