From b9d568c9c37e6e8267ac4cf369832cadb653fb10 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Mon, 30 Oct 2023 16:46:30 +0900 Subject: [PATCH] =?UTF-8?q?test:=20APReactionServiceImpl=E3=81=AE=E3=83=86?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ap/APReactionServiceImplTest.kt | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/test/kotlin/dev/usbharu/hideout/service/ap/APReactionServiceImplTest.kt diff --git a/src/test/kotlin/dev/usbharu/hideout/service/ap/APReactionServiceImplTest.kt b/src/test/kotlin/dev/usbharu/hideout/service/ap/APReactionServiceImplTest.kt new file mode 100644 index 00000000..d0a89b23 --- /dev/null +++ b/src/test/kotlin/dev/usbharu/hideout/service/ap/APReactionServiceImplTest.kt @@ -0,0 +1,92 @@ +package dev.usbharu.hideout.service.ap + + +import dev.usbharu.hideout.domain.model.hideout.entity.Reaction +import dev.usbharu.hideout.domain.model.job.DeliverReactionJob +import dev.usbharu.hideout.domain.model.job.DeliverRemoveReactionJob +import dev.usbharu.hideout.query.FollowerQueryService +import dev.usbharu.hideout.query.PostQueryService +import dev.usbharu.hideout.service.core.TwitterSnowflakeIdGenerateService +import dev.usbharu.hideout.service.job.JobQueueParentService +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Test +import org.mockito.kotlin.* +import utils.JsonObjectMapper.objectMapper +import utils.PostBuilder +import utils.UserBuilder + +class APReactionServiceImplTest { + @Test + fun `reaction リアクションするとフォロワーの数だけ配送ジョブが作成される`() = runTest { + + val user = UserBuilder.localUserOf() + val post = PostBuilder.of() + + val postQueryService = mock { + onBlocking { findById(eq(post.id)) } doReturn post + } + val followerQueryService = mock { + onBlocking { findFollowersById(eq(user.id)) } doReturn listOf( + UserBuilder.localUserOf(), + UserBuilder.localUserOf(), + UserBuilder.localUserOf() + ) + } + val jobQueueParentService = mock() + val apReactionServiceImpl = APReactionServiceImpl( + jobQueueParentService = jobQueueParentService, + userQueryService = mock(), + followerQueryService = followerQueryService, + postQueryService = postQueryService, + objectMapper = objectMapper + ) + + apReactionServiceImpl.reaction( + Reaction( + id = TwitterSnowflakeIdGenerateService.generateId(), + emojiId = 0, + postId = post.id, + userId = user.id + ) + ) + + verify(jobQueueParentService, times(3)).schedule(eq(DeliverReactionJob), any()) + } + + @Test + fun `removeReaction リアクションを削除するとフォロワーの数だけ配送ジョブが作成される`() = runTest { + + val user = UserBuilder.localUserOf() + val post = PostBuilder.of() + + val postQueryService = mock { + onBlocking { findById(eq(post.id)) } doReturn post + } + val followerQueryService = mock { + onBlocking { findFollowersById(eq(user.id)) } doReturn listOf( + UserBuilder.localUserOf(), + UserBuilder.localUserOf(), + UserBuilder.localUserOf() + ) + } + val jobQueueParentService = mock() + val apReactionServiceImpl = APReactionServiceImpl( + jobQueueParentService = jobQueueParentService, + userQueryService = mock(), + followerQueryService = followerQueryService, + postQueryService = postQueryService, + objectMapper = objectMapper + ) + + apReactionServiceImpl.removeReaction( + Reaction( + id = TwitterSnowflakeIdGenerateService.generateId(), + emojiId = 0, + postId = post.id, + userId = user.id + ) + ) + + verify(jobQueueParentService, times(3)).schedule(eq(DeliverRemoveReactionJob), any()) + } +}