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