mirror of https://github.com/usbharu/Hideout.git
test: RelationshipServiceImplTestを追加
This commit is contained in:
parent
5b6aa9e4e8
commit
b5e2981095
|
@ -0,0 +1,786 @@
|
||||||
|
package dev.usbharu.hideout.core.service.relationship
|
||||||
|
|
||||||
|
import dev.usbharu.hideout.activitypub.service.activity.accept.ApSendAcceptService
|
||||||
|
import dev.usbharu.hideout.activitypub.service.activity.block.APSendBlockService
|
||||||
|
import dev.usbharu.hideout.activitypub.service.activity.follow.APSendFollowService
|
||||||
|
import dev.usbharu.hideout.activitypub.service.activity.reject.ApSendRejectService
|
||||||
|
import dev.usbharu.hideout.activitypub.service.activity.undo.APSendUndoService
|
||||||
|
import dev.usbharu.hideout.application.config.ApplicationConfig
|
||||||
|
import dev.usbharu.hideout.core.domain.model.relationship.Relationship
|
||||||
|
import dev.usbharu.hideout.core.domain.model.relationship.RelationshipRepository
|
||||||
|
import dev.usbharu.hideout.core.query.UserQueryService
|
||||||
|
import dev.usbharu.hideout.core.service.follow.SendFollowDto
|
||||||
|
import kotlinx.coroutines.test.runTest
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import org.junit.jupiter.api.assertThrows
|
||||||
|
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.UserBuilder
|
||||||
|
import java.net.URL
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension::class)
|
||||||
|
class RelationshipServiceImplTest {
|
||||||
|
|
||||||
|
@Spy
|
||||||
|
private val applicationConfig = ApplicationConfig(URL("https://example.com"))
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var userQueryService: UserQueryService
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var relationshipRepository: RelationshipRepository
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var apSendFollowService: APSendFollowService
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var apSendBlockService: APSendBlockService
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var apSendAcceptService: ApSendAcceptService
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var apSendRejectService: ApSendRejectService
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var apSendUndoService: APSendUndoService
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private lateinit var relationshipServiceImpl: RelationshipServiceImpl
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `followRequest ローカルの場合followRequestフラグがtrueで永続化される`() = runTest {
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(UserBuilder.localUserOf(domain = "example.com"))
|
||||||
|
|
||||||
|
relationshipServiceImpl.followRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = true,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `followRequest リモートの場合Followアクティビティが配送される`() = runTest {
|
||||||
|
val localUser = UserBuilder.localUserOf(domain = "example.com")
|
||||||
|
whenever(userQueryService.findById(eq(1234))).doReturn(localUser)
|
||||||
|
val remoteUser = UserBuilder.remoteUserOf(domain = "remote.example.com")
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(remoteUser)
|
||||||
|
|
||||||
|
relationshipServiceImpl.followRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = true,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendFollowService, times(1)).sendFollow(eq(SendFollowDto(localUser, remoteUser)))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `followRequest ブロックされている場合フォローリクエスト出来ない`() = runTest {
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(null)
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(5678), eq(1234))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 5678,
|
||||||
|
targetUserId = 1234,
|
||||||
|
following = false,
|
||||||
|
blocking = true,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.followRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `followRequest ブロックしている場合フォローリクエスト出来ない`() = runTest {
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = true,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.followRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `followRequest 既にフォローしている場合は念の為フォロー承認を自動で行う`() = runTest {
|
||||||
|
val localUser = UserBuilder.localUserOf(domain = "example.com")
|
||||||
|
whenever(userQueryService.findById(eq(1234))).doReturn(localUser)
|
||||||
|
val remoteUser = UserBuilder.remoteUserOf(domain = "remote.example.com")
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(remoteUser)
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = true,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.followRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = true,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendAcceptService, times(1)).sendAccept(eq(localUser), eq(remoteUser))
|
||||||
|
verify(apSendFollowService, never()).sendFollow(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `followRequest フォローリクエスト無視の場合は無視する`() = runTest {
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(5678), eq(1234))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 5678,
|
||||||
|
targetUserId = 1234,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.followRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `block ローカルユーザーの場合永続化される`() = runTest {
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(UserBuilder.localUserOf(domain = "example.com"))
|
||||||
|
|
||||||
|
relationshipServiceImpl.block(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = true,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `block リモートユーザーの場合永続化されて配送される`() = runTest {
|
||||||
|
val localUser = UserBuilder.localUserOf(domain = "example.com")
|
||||||
|
whenever(userQueryService.findById(eq(1234))).doReturn(localUser)
|
||||||
|
val remoteUser = UserBuilder.remoteUserOf(domain = "remote.example.com")
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(remoteUser)
|
||||||
|
|
||||||
|
relationshipServiceImpl.block(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = true,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendBlockService, times(1)).sendBlock(eq(localUser), eq(remoteUser))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `acceptFollowRequest ローカルユーザーの場合永続化される`() = runTest {
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(UserBuilder.localUserOf(domain = "example.com"))
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = true,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.acceptFollowRequest(1234, 5678, false)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = true,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendAcceptService, never()).sendAccept(any(), any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `acceptFollowRequest リモートユーザーの場合永続化されて配送される`() = runTest {
|
||||||
|
val localUser = UserBuilder.localUserOf(domain = "example.com")
|
||||||
|
whenever(userQueryService.findById(eq(1234))).doReturn(localUser)
|
||||||
|
val remoteUser = UserBuilder.remoteUserOf(domain = "remote.example.com")
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(remoteUser)
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = true,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.acceptFollowRequest(1234, 5678, false)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = true,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendAcceptService, times(1)).sendAccept(eq(localUser), eq(remoteUser))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `acceptFollowRequest Relationshipが存在しないときは何もしない`() = runTest {
|
||||||
|
relationshipServiceImpl.acceptFollowRequest(1234, 5678, false)
|
||||||
|
|
||||||
|
verify(apSendAcceptService, never()).sendAccept(any(), any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `acceptFollowRequest フォローリクエストが存在せずforceがfalseのとき何もしない`() = runTest {
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
1234, 5678, false, false, false, false, false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.acceptFollowRequest(1234, 5678, false)
|
||||||
|
|
||||||
|
verify(apSendAcceptService, never()).sendAccept(any(), any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `acceptFollowRequest フォローリクエストが存在せずforceがtrueのときフォローを承認する`() = runTest {
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(UserBuilder.remoteUserOf(domain = "remote.example.com"))
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
1234, 5678, false, false, false, false, false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.acceptFollowRequest(1234, 5678, true)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = true,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `acceptFollowRequest ブロックしている場合は何もしない`() = runTest {
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
1234, 5678, false, true, false, true, false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThrows<IllegalStateException> {
|
||||||
|
relationshipServiceImpl.acceptFollowRequest(1234, 5678, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `acceptFollowRequest ブロックされている場合は何もしない`() = runTest {
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
1234, 5678, false, false, false, true, false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(5678), eq(1234))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
5678, 1234, false, true, false, true, false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThrows<IllegalStateException> {
|
||||||
|
relationshipServiceImpl.acceptFollowRequest(1234, 5678, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `rejectFollowRequest ローカルユーザーの場合永続化される`() = runTest {
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(UserBuilder.localUserOf(domain = "example.com"))
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = true,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.rejectFollowRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendRejectService, never()).sendReject(any(), any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `rejectFollowRequest リモートユーザーの場合永続化されて配送される`() = runTest {
|
||||||
|
val localUser = UserBuilder.localUserOf(domain = "example.com")
|
||||||
|
whenever(userQueryService.findById(eq(1234))).doReturn(localUser)
|
||||||
|
|
||||||
|
val remoteUser = UserBuilder.remoteUserOf(domain = "remote.example.com")
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(remoteUser)
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = true,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.rejectFollowRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendRejectService, times(1)).sendReject(eq(localUser), eq(remoteUser))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `rejectFollowRequest Relationshipが存在しないとき何もしない`() = runTest {
|
||||||
|
|
||||||
|
relationshipServiceImpl.rejectFollowRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `rejectFollowRequest フォローリクエストが存在しない場合何もしない`() = runTest {
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.rejectFollowRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `ignoreFollowRequest 永続化される`() = runTest {
|
||||||
|
relationshipServiceImpl.ignoreFollowRequest(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unfollow ローカルユーザーの場合永続化される`() = runTest {
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(UserBuilder.localUserOf(domain = "example.com"))
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = true,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.unfollow(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendUndoService, never()).sendUndoFollow(any(), any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unfollow リモートユーザー場合永続化されて配送される`() = runTest {
|
||||||
|
val localUser = UserBuilder.localUserOf(domain = "example.com")
|
||||||
|
whenever(userQueryService.findById(eq(1234))).doReturn(localUser)
|
||||||
|
|
||||||
|
val remoteUser = UserBuilder.remoteUserOf(domain = "remote.example.com")
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(remoteUser)
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = true,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.unfollow(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendUndoService, times(1)).sendUndoFollow(eq(localUser), eq(remoteUser))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unfollow Relationshipが存在しないときは何もしない`() = runTest {
|
||||||
|
relationshipServiceImpl.unfollow(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unfollow フォローしていなかった場合は何もしない`() = runTest {
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.unfollow(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unblock ローカルユーザーの場合永続化される`() = runTest {
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(UserBuilder.localUserOf(domain = "example.com"))
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = true,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.unblock(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendUndoService, never()).sendUndoBlock(any(), any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unblock リモートユーザーの場合永続化されて配送される`() = runTest {
|
||||||
|
val localUser = UserBuilder.localUserOf(domain = "example.com")
|
||||||
|
whenever(userQueryService.findById(eq(1234))).doReturn(localUser)
|
||||||
|
|
||||||
|
val remoteUser = UserBuilder.remoteUserOf(domain = "remote.example.com")
|
||||||
|
whenever(userQueryService.findById(eq(5678))).doReturn(remoteUser)
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = true,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.unblock(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
1234,
|
||||||
|
5678,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
verify(apSendUndoService, times(1)).sendUndoBlock(eq(localUser), eq(remoteUser))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unblock Relationshipがない場合何もしない`() = runTest {
|
||||||
|
relationshipServiceImpl.unblock(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unblock ブロックしていない場合は何もしない`() = runTest {
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.unblock(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `mute ミュートが永続化される`() = runTest {
|
||||||
|
relationshipServiceImpl.mute(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = true,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unmute 永続化される`() = runTest {
|
||||||
|
|
||||||
|
whenever(relationshipRepository.findByUserIdAndTargetUserId(eq(1234), eq(5678))).doReturn(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = true,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
relationshipServiceImpl.unmute(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, times(1)).save(
|
||||||
|
eq(
|
||||||
|
Relationship(
|
||||||
|
userId = 1234,
|
||||||
|
targetUserId = 5678,
|
||||||
|
following = false,
|
||||||
|
blocking = false,
|
||||||
|
muting = false,
|
||||||
|
followRequest = false,
|
||||||
|
ignoreFollowRequestFromTarget = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `unmute Relationshipが存在しない場合は何もしない`() = runTest {
|
||||||
|
relationshipServiceImpl.unmute(1234, 5678)
|
||||||
|
|
||||||
|
verify(relationshipRepository, never()).save(any())
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue