test #426

Merged
klaus merged 415 commits from test into main 2026-06-27 00:35:30 +00:00
2 changed files with 37 additions and 1 deletions
Showing only changes of commit b7c1bb8c20 - Show all commits

View File

@@ -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"
}
}

View File

@@ -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() {