feat(user-creator-chat): DM 생성 수신자 필드를 일반화한다
This commit is contained in:
+1
-1
@@ -28,7 +28,7 @@ class UserCreatorChatController(
|
||||
@RequestBody request: CreateUserCreatorChatRoomRequest
|
||||
) = run {
|
||||
if (member == null) throw SodaException(messageKey = "common.error.bad_credentials")
|
||||
ApiResponse.ok(service.createOrGetRoom(member, request.creatorId))
|
||||
ApiResponse.ok(service.createOrGetRoom(member, request.recipientMemberId()))
|
||||
}
|
||||
|
||||
@GetMapping("/{roomId}/open")
|
||||
|
||||
+12
-2
@@ -1,8 +1,18 @@
|
||||
package kr.co.vividnext.sodalive.v2.usercreatorchat.dto
|
||||
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
|
||||
data class CreateUserCreatorChatRoomRequest(
|
||||
val creatorId: Long
|
||||
)
|
||||
val recipientId: Long? = null,
|
||||
val creatorId: Long? = null
|
||||
) {
|
||||
fun recipientMemberId(): Long {
|
||||
if (recipientId != null && creatorId != null && recipientId != creatorId) {
|
||||
throw SodaException(messageKey = "common.error.invalid_request")
|
||||
}
|
||||
return recipientId ?: creatorId ?: throw SodaException(messageKey = "common.error.invalid_request")
|
||||
}
|
||||
}
|
||||
|
||||
data class CreateUserCreatorChatRoomResponse(
|
||||
val roomId: Long
|
||||
|
||||
+43
@@ -1,7 +1,13 @@
|
||||
package kr.co.vividnext.sodalive.v2.usercreatorchat
|
||||
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.v2.usercreatorchat.controller.UserCreatorChatController
|
||||
import kr.co.vividnext.sodalive.v2.usercreatorchat.dto.CreateUserCreatorChatRoomRequest
|
||||
import kr.co.vividnext.sodalive.v2.usercreatorchat.dto.CreateUserCreatorChatRoomResponse
|
||||
import kr.co.vividnext.sodalive.v2.usercreatorchat.service.UserCreatorChatService
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertThrows
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.mockito.Mockito
|
||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
|
||||
@@ -23,4 +29,41 @@ class UserCreatorChatControllerMappingTest {
|
||||
mockMvc.perform(post("/api/v2/user-creator-chat/rooms/10/messages/text"))
|
||||
.andExpect(status().isNotFound)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldCreateRoomWithRecipientId() {
|
||||
val service = Mockito.mock(UserCreatorChatService::class.java)
|
||||
val controller = UserCreatorChatController(service)
|
||||
val member = Member(email = "creator@test.com", password = "pw", nickname = "creator").apply { id = 10L }
|
||||
Mockito.`when`(service.createOrGetRoom(member, 20L))
|
||||
.thenReturn(CreateUserCreatorChatRoomResponse(roomId = 30L))
|
||||
|
||||
val response = controller.createOrGetRoom(
|
||||
member,
|
||||
CreateUserCreatorChatRoomRequest(recipientId = 20L, creatorId = null)
|
||||
)
|
||||
|
||||
Mockito.verify(service).createOrGetRoom(member, 20L)
|
||||
assertEquals(30L, response.data!!.roomId)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldCreateRoomWithLegacyCreatorId() {
|
||||
val request = CreateUserCreatorChatRoomRequest(recipientId = null, creatorId = 20L)
|
||||
|
||||
assertEquals(20L, request.recipientMemberId())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldRejectMissingOrConflictingRecipientIds() {
|
||||
val missing = assertThrows(SodaException::class.java) {
|
||||
CreateUserCreatorChatRoomRequest(recipientId = null, creatorId = null).recipientMemberId()
|
||||
}
|
||||
assertEquals("common.error.invalid_request", missing.messageKey)
|
||||
|
||||
val conflict = assertThrows(SodaException::class.java) {
|
||||
CreateUserCreatorChatRoomRequest(recipientId = 20L, creatorId = 21L).recipientMemberId()
|
||||
}
|
||||
assertEquals("common.error.invalid_request", conflict.messageKey)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user