feat(user-creator-chat): DM 생성 수신자 필드를 일반화한다
This commit is contained in:
+1
-1
@@ -28,7 +28,7 @@ class UserCreatorChatController(
|
|||||||
@RequestBody request: CreateUserCreatorChatRoomRequest
|
@RequestBody request: CreateUserCreatorChatRoomRequest
|
||||||
) = run {
|
) = run {
|
||||||
if (member == null) throw SodaException(messageKey = "common.error.bad_credentials")
|
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")
|
@GetMapping("/{roomId}/open")
|
||||||
|
|||||||
+12
-2
@@ -1,8 +1,18 @@
|
|||||||
package kr.co.vividnext.sodalive.v2.usercreatorchat.dto
|
package kr.co.vividnext.sodalive.v2.usercreatorchat.dto
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.common.SodaException
|
||||||
|
|
||||||
data class CreateUserCreatorChatRoomRequest(
|
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(
|
data class CreateUserCreatorChatRoomResponse(
|
||||||
val roomId: Long
|
val roomId: Long
|
||||||
|
|||||||
+43
@@ -1,7 +1,13 @@
|
|||||||
package kr.co.vividnext.sodalive.v2.usercreatorchat
|
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.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 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.junit.jupiter.api.Test
|
||||||
import org.mockito.Mockito
|
import org.mockito.Mockito
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
|
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"))
|
mockMvc.perform(post("/api/v2/user-creator-chat/rooms/10/messages/text"))
|
||||||
.andExpect(status().isNotFound)
|
.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