diff --git a/src/app/Packages/Features/CommandUseCases/UseCase/Favorite/AddFavoriteUseCase.php b/src/app/Packages/Features/CommandUseCases/UseCase/Favorite/AddFavoriteUseCase.php new file mode 100644 index 0000000..9178932 --- /dev/null +++ b/src/app/Packages/Features/CommandUseCases/UseCase/Favorite/AddFavoriteUseCase.php @@ -0,0 +1,17 @@ +favoriteRepository->addFavorite($userId, $worldHeritageSiteId); + } +} diff --git a/src/app/Packages/Features/Tests/CommandUseCases/AddFavoriteUseCaseTest.php b/src/app/Packages/Features/Tests/CommandUseCases/AddFavoriteUseCaseTest.php new file mode 100644 index 0000000..50426fc --- /dev/null +++ b/src/app/Packages/Features/Tests/CommandUseCases/AddFavoriteUseCaseTest.php @@ -0,0 +1,46 @@ +shouldReceive('addFavorite') + ->once() + ->with(1, 2); + + (new AddFavoriteUseCase($repository))->handle(1, 2); + } + + public function test_handle_propagates_exception_when_user_not_found(): void + { + /** @var FavoriteRepositoryInterface|MockInterface $repository */ + $repository = Mockery::mock(FavoriteRepositoryInterface::class); + $repository->shouldReceive('addFavorite') + ->once() + ->with(999999, 2) + ->andThrow(new Exception('User not found.')); + + $this->expectException(Exception::class); + $this->expectExceptionMessage('User not found.'); + + (new AddFavoriteUseCase($repository))->handle(999999, 2); + } +}