test #426
@@ -139,6 +139,8 @@ class UserCreatorChatService(
|
||||
memberId = opponent.id!!,
|
||||
payload = websocketMessagePayload(UserCreatorChatWebSocketMessageType.MESSAGE, roomId, opponentMessage)
|
||||
)
|
||||
} else {
|
||||
publishMessagePush(message, sender, opponent)
|
||||
}
|
||||
return senderMessage
|
||||
}
|
||||
@@ -236,7 +238,9 @@ class UserCreatorChatService(
|
||||
senderMemberId = sender.id,
|
||||
args = listOf(sender.nickname),
|
||||
recipients = listOf(opponent.id!!),
|
||||
messageId = message.id
|
||||
roomId = message.chatRoom.id,
|
||||
messageId = message.id,
|
||||
chatType = USER_CREATOR_CHAT_TYPE
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -298,4 +302,8 @@ class UserCreatorChatService(
|
||||
val senderParticipant: UserCreatorChatParticipant,
|
||||
val opponentParticipant: UserCreatorChatParticipant
|
||||
)
|
||||
|
||||
companion object {
|
||||
private const val USER_CREATOR_CHAT_TYPE = "USER_CREATOR"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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