From 2a281386a5822010c2b93880c72e448dbefaf95d Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Fri, 24 Apr 2026 13:24:01 +0300 Subject: [PATCH] test create session --- .../Unit/Auth/UseCases/CreateSessionTest.php | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 tests/Unit/Auth/UseCases/CreateSessionTest.php diff --git a/tests/Unit/Auth/UseCases/CreateSessionTest.php b/tests/Unit/Auth/UseCases/CreateSessionTest.php new file mode 100644 index 0000000..f58f66f --- /dev/null +++ b/tests/Unit/Auth/UseCases/CreateSessionTest.php @@ -0,0 +1,83 @@ +sessionRepo = new FakeSessionRepository(); + $this->tokenGenerator = new FakeTokenGenerator( + ['generated-token-abc'] + ); + $this->clock = new FakeClock( + new DateTimeImmutable('2025-01-01T12:00:00+00:00') + ); + $this->useCase = new CreateSession( + $this->sessionRepo, + $this->tokenGenerator, + $this->clock, + ); + $this->user = new User( + id: 7, + email: new EmailAddress('test@test.com'), + ); + } + + public function test_creates_session_for_user(): void + { + $session = $this->useCase->execute($this->user); + + $this->assertEquals(7, $session->getUserId()); + } + + public function test_session_token_comes_from_generator(): void + { + $session = $this->useCase->execute($this->user); + + $this->assertEquals('generated-token-abc', $session->getToken()); + } + + public function test_session_created_at_is_now(): void + { + $session = $this->useCase->execute($this->user); + + $this->assertEquals( + new DateTimeImmutable('2025-01-01T12:00:00+00:00'), + $session->getCreatedAt() + ); + } + + public function test_session_expires_in_seven_days(): void + { + $session = $this->useCase->execute($this->user); + + $this->assertEquals( + new DateTimeImmutable('2025-01-08T12:00:00+00:00'), + $session->getExpiresAt() + ); + } + + public function test_session_is_persisted(): void + { + $this->useCase->execute($this->user); + + $found = $this->sessionRepo->findByToken('generated-token-abc'); + $this->assertNotNull($found); + } +}