feat(user-creator-chat): 미접속 상대 푸시를 발행한다
This commit is contained in:
@@ -251,6 +251,34 @@ class UserCreatorChatServiceTest {
|
||||
Mockito.verifyNoInteractions(eventPublisher)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("WebSocket 텍스트 전송은 상대방 presence가 없으면 채팅방 이동용 푸시 이벤트를 발행한다")
|
||||
fun shouldPublishPushEventWithChatPayloadWhenOpponentPresenceDoesNotExist() {
|
||||
val user = member(1L, "user")
|
||||
val creator = member(2L, "creator")
|
||||
val room = room(10L)
|
||||
val senderParticipant = participant(100L, room, user)
|
||||
val recipientParticipant = participant(101L, room, creator)
|
||||
Mockito.`when`(roomRepository.findByIdAndIsActiveTrue(10L)).thenReturn(room)
|
||||
Mockito.`when`(participantRepository.findActiveByRoomIdAndMemberId(10L, 1L)).thenReturn(senderParticipant)
|
||||
Mockito.`when`(participantRepository.findActiveOpponent(10L, 1L)).thenReturn(recipientParticipant)
|
||||
Mockito.`when`(presenceService.hasPresence(10L, 2L)).thenReturn(false)
|
||||
Mockito.`when`(messageRepository.save(Mockito.any(UserCreatorChatMessage::class.java))).thenAnswer { invocation ->
|
||||
(invocation.arguments[0] as UserCreatorChatMessage).apply { id = 204L }
|
||||
}
|
||||
|
||||
service.sendTextMessageByWebSocket(memberId = 1L, roomId = 10L, textMessage = "hello")
|
||||
|
||||
val eventCaptor = ArgumentCaptor.forClass(FcmEvent::class.java)
|
||||
Mockito.verify(eventPublisher).publishEvent(eventCaptor.capture())
|
||||
assertEquals(FcmEventType.INDIVIDUAL, eventCaptor.value.type)
|
||||
assertEquals(listOf(2L), eventCaptor.value.recipients)
|
||||
assertEquals(10L, eventCaptor.value.roomId)
|
||||
assertEquals(204L, eventCaptor.value.messageId)
|
||||
assertEquals("USER_CREATOR", eventCaptor.value.chatType)
|
||||
Mockito.verifyNoInteractions(roomMessageBroker)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("커서가 있으면 기본 20개 기준으로 이전 메시지를 조회한다")
|
||||
fun shouldGetPreviousMessagesWithDefaultLimitWhenCursorExists() {
|
||||
|
||||
Reference in New Issue
Block a user