From 0417e4af3b6f4ad550354860ed733e8262f5034c Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Wed, 8 Nov 2023 17:19:27 +0900 Subject: [PATCH] =?UTF-8?q?test:=20APSendCreateServiceImpl=E3=81=AE?= =?UTF-8?q?=E3=83=86=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 --- .../create/ApSendCreateServiceImplTest.kt | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/create/ApSendCreateServiceImplTest.kt diff --git a/src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/create/ApSendCreateServiceImplTest.kt b/src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/create/ApSendCreateServiceImplTest.kt new file mode 100644 index 00000000..47b5671e --- /dev/null +++ b/src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/create/ApSendCreateServiceImplTest.kt @@ -0,0 +1,79 @@ +package dev.usbharu.hideout.activitypub.service.activity.create + +import com.fasterxml.jackson.databind.ObjectMapper +import dev.usbharu.hideout.activitypub.domain.model.Note +import dev.usbharu.hideout.activitypub.query.NoteQueryService +import dev.usbharu.hideout.activitypub.service.objects.note.APNoteServiceImpl +import dev.usbharu.hideout.application.config.ActivityPubConfig +import dev.usbharu.hideout.application.config.ApplicationConfig +import dev.usbharu.hideout.core.external.job.DeliverPostJob +import dev.usbharu.hideout.core.query.FollowerQueryService +import dev.usbharu.hideout.core.query.UserQueryService +import dev.usbharu.hideout.core.service.job.JobQueueParentService +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith +import org.mockito.InjectMocks +import org.mockito.Mock +import org.mockito.Spy +import org.mockito.junit.jupiter.MockitoExtension +import org.mockito.kotlin.* +import utils.PostBuilder +import utils.UserBuilder +import java.net.URL +import java.time.Instant + +@ExtendWith(MockitoExtension::class) +class ApSendCreateServiceImplTest { + + @Mock + private lateinit var followerQueryService: FollowerQueryService + + @Spy + private val objectMapper: ObjectMapper = ActivityPubConfig().objectMapper() + + @Mock + private lateinit var jobQueueParentService: JobQueueParentService + + @Mock + private lateinit var userQueryService: UserQueryService + + @Mock + private lateinit var noteQueryService: NoteQueryService + + @Spy + private val applicationConfig: ApplicationConfig = ApplicationConfig(URL("https://example.com")) + + @InjectMocks + private lateinit var apSendCreateServiceImpl: ApSendCreateServiceImpl + + @Test + fun `createNote 正常なPostでCreateのジョブを発行できる`() = runTest { + val post = PostBuilder.of() + val user = UserBuilder.localUserOf(id = post.userId) + val note = Note( + name = "Post", + id = post.apId, + attributedTo = user.url, + content = post.text, + published = Instant.ofEpochMilli(post.createdAt).toString(), + to = listOfNotNull(APNoteServiceImpl.public, user.followers), + sensitive = post.sensitive, + cc = listOfNotNull(APNoteServiceImpl.public, user.followers), + inReplyTo = null + ) + val followers = listOf( + UserBuilder.remoteUserOf(), + UserBuilder.remoteUserOf(), + UserBuilder.remoteUserOf() + ) + + whenever(followerQueryService.findFollowersById(eq(post.userId))).doReturn(followers) + whenever(userQueryService.findById(eq(post.userId))).doReturn(user) + whenever(noteQueryService.findById(eq(post.id))).doReturn(note to post) + + apSendCreateServiceImpl.createNote(post) + + verify(jobQueueParentService, times(followers.size)).schedule(eq(DeliverPostJob), any()) + } +}