Compare commits

...

3 Commits

9 changed files with 42 additions and 0 deletions

View File

@@ -182,6 +182,7 @@ data class CreatorChannelCommunityCommentsResponse(
data class CreatorChannelCommunityCommentResponse( data class CreatorChannelCommunityCommentResponse(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,
@@ -192,6 +193,7 @@ data class CreatorChannelCommunityCommentResponse(
fun from(comment: CreatorChannelCommunityComment): CreatorChannelCommunityCommentResponse { fun from(comment: CreatorChannelCommunityComment): CreatorChannelCommunityCommentResponse {
return CreatorChannelCommunityCommentResponse( return CreatorChannelCommunityCommentResponse(
commentId = comment.commentId, commentId = comment.commentId,
writerId = comment.writerId,
writerProfileImageUrl = comment.writerProfileImageUrl, writerProfileImageUrl = comment.writerProfileImageUrl,
writerNickname = comment.writerNickname, writerNickname = comment.writerNickname,
content = comment.content, content = comment.content,
@@ -225,6 +227,7 @@ data class CreatorChannelCommunityRepliesResponse(
data class CreatorChannelCommunityReplyResponse( data class CreatorChannelCommunityReplyResponse(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,
@@ -234,6 +237,7 @@ data class CreatorChannelCommunityReplyResponse(
fun from(reply: CreatorChannelCommunityReply): CreatorChannelCommunityReplyResponse { fun from(reply: CreatorChannelCommunityReply): CreatorChannelCommunityReplyResponse {
return CreatorChannelCommunityReplyResponse( return CreatorChannelCommunityReplyResponse(
commentId = reply.commentId, commentId = reply.commentId,
writerId = reply.writerId,
writerProfileImageUrl = reply.writerProfileImageUrl, writerProfileImageUrl = reply.writerProfileImageUrl,
writerNickname = reply.writerNickname, writerNickname = reply.writerNickname,
content = reply.content, content = reply.content,
@@ -270,6 +274,7 @@ data class CreatorChannelCommunityComments(
data class CreatorChannelCommunityComment( data class CreatorChannelCommunityComment(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,
@@ -286,6 +291,7 @@ data class CreatorChannelCommunityReplies(
data class CreatorChannelCommunityReply( data class CreatorChannelCommunityReply(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,

View File

@@ -194,6 +194,7 @@ data class CreatorChannelCommunityCommentsResponse(
data class CreatorChannelCommunityCommentResponse( data class CreatorChannelCommunityCommentResponse(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,
@@ -203,6 +204,7 @@ data class CreatorChannelCommunityCommentResponse(
data class CreatorChannelCommunityReplyResponse( data class CreatorChannelCommunityReplyResponse(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,

View File

@@ -77,6 +77,7 @@ data class CreatorChannelCommunityCommentsResponse(
data class CreatorChannelCommunityCommentResponse( data class CreatorChannelCommunityCommentResponse(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,
@@ -87,6 +88,7 @@ data class CreatorChannelCommunityCommentResponse(
fun from(comment: CreatorChannelCommunityComment): CreatorChannelCommunityCommentResponse { fun from(comment: CreatorChannelCommunityComment): CreatorChannelCommunityCommentResponse {
return CreatorChannelCommunityCommentResponse( return CreatorChannelCommunityCommentResponse(
commentId = comment.commentId, commentId = comment.commentId,
writerId = comment.writerId,
writerProfileImageUrl = comment.writerProfileImageUrl, writerProfileImageUrl = comment.writerProfileImageUrl,
writerNickname = comment.writerNickname, writerNickname = comment.writerNickname,
content = comment.content, content = comment.content,
@@ -120,6 +122,7 @@ data class CreatorChannelCommunityRepliesResponse(
data class CreatorChannelCommunityReplyResponse( data class CreatorChannelCommunityReplyResponse(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,
@@ -129,6 +132,7 @@ data class CreatorChannelCommunityReplyResponse(
fun from(reply: CreatorChannelCommunityReply): CreatorChannelCommunityReplyResponse { fun from(reply: CreatorChannelCommunityReply): CreatorChannelCommunityReplyResponse {
return CreatorChannelCommunityReplyResponse( return CreatorChannelCommunityReplyResponse(
commentId = reply.commentId, commentId = reply.commentId,
writerId = reply.writerId,
writerProfileImageUrl = reply.writerProfileImageUrl, writerProfileImageUrl = reply.writerProfileImageUrl,
writerNickname = reply.writerNickname, writerNickname = reply.writerNickname,
content = reply.content, content = reply.content,

View File

@@ -253,6 +253,7 @@ class CreatorChannelCommunityQueryService(
): CreatorChannelCommunityComment { ): CreatorChannelCommunityComment {
return CreatorChannelCommunityComment( return CreatorChannelCommunityComment(
commentId = commentId, commentId = commentId,
writerId = writerId,
writerProfileImageUrl = writerProfilePath.toCdnUrl(cloudFrontHost) ?: defaultProfileImageUrl(), writerProfileImageUrl = writerProfilePath.toCdnUrl(cloudFrontHost) ?: defaultProfileImageUrl(),
writerNickname = writerNickname.removeDeletedNicknamePrefix(), writerNickname = writerNickname.removeDeletedNicknamePrefix(),
content = content, content = content,
@@ -264,6 +265,7 @@ class CreatorChannelCommunityQueryService(
private fun CreatorChannelCommunityCommentRecord.toReplyDomain(): CreatorChannelCommunityReply { private fun CreatorChannelCommunityCommentRecord.toReplyDomain(): CreatorChannelCommunityReply {
return CreatorChannelCommunityReply( return CreatorChannelCommunityReply(
commentId = commentId, commentId = commentId,
writerId = writerId,
writerProfileImageUrl = writerProfilePath.toCdnUrl(cloudFrontHost) ?: defaultProfileImageUrl(), writerProfileImageUrl = writerProfilePath.toCdnUrl(cloudFrontHost) ?: defaultProfileImageUrl(),
writerNickname = writerNickname.removeDeletedNicknamePrefix(), writerNickname = writerNickname.removeDeletedNicknamePrefix(),
content = content, content = content,

View File

@@ -17,6 +17,7 @@ data class CreatorChannelCommunityComments(
data class CreatorChannelCommunityComment( data class CreatorChannelCommunityComment(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,
@@ -33,6 +34,7 @@ data class CreatorChannelCommunityReplies(
data class CreatorChannelCommunityReply( data class CreatorChannelCommunityReply(
val commentId: Long, val commentId: Long,
val writerId: Long,
val writerProfileImageUrl: String, val writerProfileImageUrl: String,
val writerNickname: String, val writerNickname: String,
val content: String, val content: String,

View File

@@ -180,7 +180,9 @@ class CreatorChannelCommunityControllerTest @Autowired constructor(
.andExpect(jsonPath("$.data.postId").value(101)) .andExpect(jsonPath("$.data.postId").value(101))
.andExpect(jsonPath("$.data.isLiked").value(true)) .andExpect(jsonPath("$.data.isLiked").value(true))
.andExpect(jsonPath("$.data.comments.commentCount").value(1)) .andExpect(jsonPath("$.data.comments.commentCount").value(1))
.andExpect(jsonPath("$.data.comments.comments[0].writerId").value(20))
.andExpect(jsonPath("$.data.comments.comments[0].latestReply.commentId").value(202)) .andExpect(jsonPath("$.data.comments.comments[0].latestReply.commentId").value(202))
.andExpect(jsonPath("$.data.comments.comments[0].latestReply.writerId").value(21))
} }
@Test @Test
@@ -203,7 +205,9 @@ class CreatorChannelCommunityControllerTest @Autowired constructor(
) )
.andExpect(status().isOk) .andExpect(status().isOk)
.andExpect(jsonPath("$.data.commentCount").value(1)) .andExpect(jsonPath("$.data.commentCount").value(1))
.andExpect(jsonPath("$.data.comments[0].writerId").value(20))
.andExpect(jsonPath("$.data.comments[0].latestReply.commentId").value(202)) .andExpect(jsonPath("$.data.comments[0].latestReply.commentId").value(202))
.andExpect(jsonPath("$.data.comments[0].latestReply.writerId").value(21))
.andExpect(jsonPath("$.data.hasNext").value(false)) .andExpect(jsonPath("$.data.hasNext").value(false))
} }
@@ -259,6 +263,7 @@ class CreatorChannelCommunityControllerTest @Autowired constructor(
.andExpect(status().isOk) .andExpect(status().isOk)
.andExpect(jsonPath("$.data.replyCount").value(1)) .andExpect(jsonPath("$.data.replyCount").value(1))
.andExpect(jsonPath("$.data.replies[0].commentId").value(202)) .andExpect(jsonPath("$.data.replies[0].commentId").value(202))
.andExpect(jsonPath("$.data.replies[0].writerId").value(21))
.andExpect(jsonPath("$.data.replies[0].latestReply").doesNotExist()) .andExpect(jsonPath("$.data.replies[0].latestReply").doesNotExist())
} }
@@ -368,12 +373,14 @@ class CreatorChannelCommunityControllerTest @Autowired constructor(
comments = listOf( comments = listOf(
CreatorChannelCommunityCommentResponse( CreatorChannelCommunityCommentResponse(
commentId = 201L, commentId = 201L,
writerId = 20L,
writerProfileImageUrl = "https://cdn.test/writer.png", writerProfileImageUrl = "https://cdn.test/writer.png",
writerNickname = "writer", writerNickname = "writer",
content = "comment", content = "comment",
createdAtUtc = "2026-07-06T03:00:00Z", createdAtUtc = "2026-07-06T03:00:00Z",
latestReply = CreatorChannelCommunityReplyResponse( latestReply = CreatorChannelCommunityReplyResponse(
commentId = 202L, commentId = 202L,
writerId = 21L,
writerProfileImageUrl = "https://cdn.test/replier.png", writerProfileImageUrl = "https://cdn.test/replier.png",
writerNickname = "replier", writerNickname = "replier",
content = "reply", content = "reply",
@@ -393,6 +400,7 @@ class CreatorChannelCommunityControllerTest @Autowired constructor(
replies = listOf( replies = listOf(
CreatorChannelCommunityReplyResponse( CreatorChannelCommunityReplyResponse(
commentId = 202L, commentId = 202L,
writerId = 21L,
writerProfileImageUrl = "https://cdn.test/replier.png", writerProfileImageUrl = "https://cdn.test/replier.png",
writerNickname = "replier", writerNickname = "replier",
content = "reply", content = "reply",

View File

@@ -106,6 +106,8 @@ class CreatorChannelCommunityFacadeTest {
assertEquals(101L, response.postId) assertEquals(101L, response.postId)
assertTrue(response.isLiked) assertTrue(response.isLiked)
assertEquals(1, response.comments.commentCount) assertEquals(1, response.comments.commentCount)
assertEquals(20L, response.comments.comments.first().writerId)
assertEquals(21L, response.comments.comments.first().latestReply?.writerId)
assertEquals(201L, response.comments.comments.first().latestReply?.commentId) assertEquals(201L, response.comments.comments.first().latestReply?.commentId)
} }
@@ -123,6 +125,8 @@ class CreatorChannelCommunityFacadeTest {
assertEquals(1, response.commentCount) assertEquals(1, response.commentCount)
assertEquals(0, response.page) assertEquals(0, response.page)
assertEquals(20, response.size) assertEquals(20, response.size)
assertEquals(20L, response.comments.first().writerId)
assertEquals(21L, response.comments.first().latestReply?.writerId)
assertEquals(201L, response.comments.first().latestReply?.commentId) assertEquals(201L, response.comments.first().latestReply?.commentId)
} }
@@ -139,6 +143,7 @@ class CreatorChannelCommunityFacadeTest {
assertEquals(1, response.replyCount) assertEquals(1, response.replyCount)
assertEquals(201L, response.replies.first().commentId) assertEquals(201L, response.replies.first().commentId)
assertEquals(21L, response.replies.first().writerId)
assertTrue(response.hasNext) assertTrue(response.hasNext)
} }
@@ -208,6 +213,7 @@ class CreatorChannelCommunityFacadeTest {
comments = listOf( comments = listOf(
CreatorChannelCommunityComment( CreatorChannelCommunityComment(
commentId = 200L, commentId = 200L,
writerId = 20L,
writerProfileImageUrl = "https://cdn.test/writer.png", writerProfileImageUrl = "https://cdn.test/writer.png",
writerNickname = "writer", writerNickname = "writer",
content = "comment", content = "comment",
@@ -226,6 +232,7 @@ class CreatorChannelCommunityFacadeTest {
replies = listOf( replies = listOf(
CreatorChannelCommunityReply( CreatorChannelCommunityReply(
commentId = 201L, commentId = 201L,
writerId = 21L,
writerProfileImageUrl = "https://cdn.test/replier.png", writerProfileImageUrl = "https://cdn.test/replier.png",
writerNickname = "replier", writerNickname = "replier",
content = "reply", content = "reply",

View File

@@ -31,14 +31,18 @@ class CreatorChannelCommunityPostDetailResponseTest {
assertTrue(detailJson["isLiked"].asBoolean()) assertTrue(detailJson["isLiked"].asBoolean())
assertTrue(detailJson["comments"]["hasNext"].asBoolean()) assertTrue(detailJson["comments"]["hasNext"].asBoolean())
assertTrue(detailJson["comments"]["comments"][0].has("latestReply")) assertTrue(detailJson["comments"]["comments"][0].has("latestReply"))
assertTrue(detailJson["comments"]["comments"][0].has("writerId"))
assertTrue(detailJson["comments"]["comments"][0]["latestReply"].has("commentId")) assertTrue(detailJson["comments"]["comments"][0]["latestReply"].has("commentId"))
assertTrue(detailJson["comments"]["comments"][0]["latestReply"].has("writerId"))
assertTrue(repliesJson["hasNext"].asBoolean()) assertTrue(repliesJson["hasNext"].asBoolean())
assertTrue(repliesJson["replies"][0].has("writerId"))
assertFalse(repliesJson["replies"][0].has("latestReply")) assertFalse(repliesJson["replies"][0].has("latestReply"))
} }
private fun createDetail(): CreatorChannelCommunityPostDetail { private fun createDetail(): CreatorChannelCommunityPostDetail {
val reply = CreatorChannelCommunityReply( val reply = CreatorChannelCommunityReply(
commentId = 2L, commentId = 2L,
writerId = 20L,
writerProfileImageUrl = "https://cdn.test/reply.png", writerProfileImageUrl = "https://cdn.test/reply.png",
writerNickname = "reply-writer", writerNickname = "reply-writer",
content = "reply", content = "reply",
@@ -67,6 +71,7 @@ class CreatorChannelCommunityPostDetailResponseTest {
comments = listOf( comments = listOf(
CreatorChannelCommunityComment( CreatorChannelCommunityComment(
commentId = 1L, commentId = 1L,
writerId = 10L,
writerProfileImageUrl = "https://cdn.test/comment.png", writerProfileImageUrl = "https://cdn.test/comment.png",
writerNickname = "comment-writer", writerNickname = "comment-writer",
content = "comment", content = "comment",
@@ -86,6 +91,7 @@ class CreatorChannelCommunityPostDetailResponseTest {
replies = listOf( replies = listOf(
CreatorChannelCommunityReply( CreatorChannelCommunityReply(
commentId = 2L, commentId = 2L,
writerId = 20L,
writerProfileImageUrl = "https://cdn.test/reply.png", writerProfileImageUrl = "https://cdn.test/reply.png",
writerNickname = "reply-writer", writerNickname = "reply-writer",
content = "reply", content = "reply",

View File

@@ -194,7 +194,9 @@ class CreatorChannelCommunityQueryServiceTest {
assertEquals(21, detail.comments.commentCount) assertEquals(21, detail.comments.commentCount)
assertEquals(20, detail.comments.comments.size) assertEquals(20, detail.comments.comments.size)
assertEquals(true, detail.comments.hasNext) assertEquals(true, detail.comments.hasNext)
assertEquals(101L, detail.comments.comments.first().writerId)
assertEquals("reply-writer", detail.comments.comments.first().latestReply?.writerNickname) assertEquals("reply-writer", detail.comments.comments.first().latestReply?.writerNickname)
assertEquals(200L, detail.comments.comments.first().latestReply?.writerId)
assertEquals("https://cdn.test/profile/default-profile.png", detail.comments.comments.first().writerProfileImageUrl) assertEquals("https://cdn.test/profile/default-profile.png", detail.comments.comments.first().writerProfileImageUrl)
} }
@@ -234,8 +236,10 @@ class CreatorChannelCommunityQueryServiceTest {
assertEquals((1L..50L).toList(), port.latestReplyCommentIds) assertEquals((1L..50L).toList(), port.latestReplyCommentIds)
assertEquals(50, comments.comments.size) assertEquals(50, comments.comments.size)
assertEquals(true, comments.hasNext) assertEquals(true, comments.hasNext)
assertEquals(101L, comments.comments.first().writerId)
assertEquals("https://cdn.test/profile/1.png", comments.comments.first().writerProfileImageUrl) assertEquals("https://cdn.test/profile/1.png", comments.comments.first().writerProfileImageUrl)
assertEquals(100L, comments.comments[1].latestReply?.commentId) assertEquals(100L, comments.comments[1].latestReply?.commentId)
assertEquals(200L, comments.comments[1].latestReply?.writerId)
} }
@Test @Test
@@ -255,6 +259,7 @@ class CreatorChannelCommunityQueryServiceTest {
assertEquals(0L, port.replyListOffset) assertEquals(0L, port.replyListOffset)
assertEquals(51, port.replyListLimit) assertEquals(51, port.replyListLimit)
assertEquals(true, replies.hasNext) assertEquals(true, replies.hasNext)
assertEquals(101L, replies.replies.first().writerId)
} }
@Test @Test