From 7839d413c247a396c221b96571b43921332caac4 Mon Sep 17 00:00:00 2001 From: Application-drop-up Date: Sun, 16 Aug 2026 20:38:09 +0900 Subject: [PATCH 1/2] feat: add RemoveFavoriteUseCase --- .../UseCase/Favorite/RemoveFavoriteUseCase.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/app/Packages/Features/CommandUseCases/UseCase/Favorite/RemoveFavoriteUseCase.php diff --git a/src/app/Packages/Features/CommandUseCases/UseCase/Favorite/RemoveFavoriteUseCase.php b/src/app/Packages/Features/CommandUseCases/UseCase/Favorite/RemoveFavoriteUseCase.php new file mode 100644 index 00000000..dee77098 --- /dev/null +++ b/src/app/Packages/Features/CommandUseCases/UseCase/Favorite/RemoveFavoriteUseCase.php @@ -0,0 +1,17 @@ +favoriteRepository->removeFavorite($userId, $worldHeritageSiteId); + } +} From 7f1caa62d6ca6d9f51a3eee15de5f6480288e648 Mon Sep 17 00:00:00 2001 From: Application-drop-up Date: Sun, 16 Aug 2026 20:38:09 +0900 Subject: [PATCH 2/2] test: cover RemoveFavoriteUseCase --- .../RemoveFavoriteUseCaseTest.php | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/app/Packages/Features/Tests/CommandUseCases/RemoveFavoriteUseCaseTest.php diff --git a/src/app/Packages/Features/Tests/CommandUseCases/RemoveFavoriteUseCaseTest.php b/src/app/Packages/Features/Tests/CommandUseCases/RemoveFavoriteUseCaseTest.php new file mode 100644 index 00000000..037c4e27 --- /dev/null +++ b/src/app/Packages/Features/Tests/CommandUseCases/RemoveFavoriteUseCaseTest.php @@ -0,0 +1,46 @@ +shouldReceive('removeFavorite') + ->once() + ->with(1, 2); + + (new RemoveFavoriteUseCase($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('removeFavorite') + ->once() + ->with(999999, 2) + ->andThrow(new Exception('User not found.')); + + $this->expectException(Exception::class); + $this->expectExceptionMessage('User not found.'); + + (new RemoveFavoriteUseCase($repository))->handle(999999, 2); + } +}