From 5566395dfb6da4a69afd686b941ebbcdc62f20c3 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 1 Nov 2025 23:19:09 +0200 Subject: [PATCH] test user login and create fake user repo --- tests/Fakes/User/FakeUserRepository.php | 35 ++++++++++++++++ tests/Unit/User/UseCases/LoginUserTest.php | 49 ++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 tests/Fakes/User/FakeUserRepository.php create mode 100644 tests/Unit/User/UseCases/LoginUserTest.php diff --git a/tests/Fakes/User/FakeUserRepository.php b/tests/Fakes/User/FakeUserRepository.php new file mode 100644 index 0000000..1e1c429 --- /dev/null +++ b/tests/Fakes/User/FakeUserRepository.php @@ -0,0 +1,35 @@ +existingUsers as $user) { + if ($user->getEmail() === $email) { + return new User( + $user->getEmail(), + $user->getPassword() + ); + } + } + + return null; + } + + public function save(User $user): User + { + $this->existingUsers[$user->getEmail()] = $user; + + return new User($user->getEmail(), $user->getPassword()); + } +} diff --git a/tests/Unit/User/UseCases/LoginUserTest.php b/tests/Unit/User/UseCases/LoginUserTest.php new file mode 100644 index 0000000..0ad232e --- /dev/null +++ b/tests/Unit/User/UseCases/LoginUserTest.php @@ -0,0 +1,49 @@ +save($user); + $dto = new LoginUserRequest($email, 'testPassword'); + $useCase = new LoginUser($dto, $userRepo); + $response = $useCase->execute(); + $this->assertTrue($response); + } + + public function test_non_existing_user_login_fails(): void + { + $email = 'test@test.com'; + $password = 'testPassword'; + $dto = new LoginUserRequest($email, $password); + $userRepo = new FakeUserRepository(); + $useCase = new LoginUser($dto, $userRepo); + $response = $useCase->execute(); + $this->assertFalse($response); + } + + public function test_wrong_password_fails(): void + { + $email = 'test@test.com'; + $password = 'testPassword'; + $user = new User($email, $password); + $userRepo = new FakeUserRepository(); + $userRepo->save($user); + $dto = new LoginUserRequest($email, 'wrongPassword'); + $useCase = new LoginUser($dto, $userRepo); + $response = $useCase->execute(); + $this->assertFalse($response); + } +}