fix(channel-donation): 비밀 후원 응답을 익명 표시 여부로 반환한다

This commit is contained in:
2026-11-05 18:34:57 +09:00
parent 5061d85d99
commit 454f20751d
3 changed files with 14 additions and 7 deletions
@@ -139,7 +139,7 @@ class CreatorChannelDonationEndToEndTest @Autowired constructor(
val donationId = selected["donationId"].asLong()
assertEquals(fixture.donationIds.single(), donationId)
assertEquals(500, selected["can"].asInt())
assertEquals(isSecret, selected["isSecret"].asBoolean())
assertFalse(selected["isSecret"].asBoolean())
assertEquals(1, tabBefore["donationCount"].asInt())
assertEquals(
tabBefore["donations"],
@@ -360,7 +360,7 @@ class CreatorChannelDonationEndToEndTest @Autowired constructor(
.andExpect(jsonPath("$.data.donations[0].can").value(300))
.andExpect(jsonPath("$.data.donations[0].message").value("크리에이터에게만 보여요"))
.andExpect(jsonPath("$.data.donations[0].createdAtUtc").exists())
.andExpect(jsonPath("$.data.donations[1].isSecret").value(true))
.andExpect(jsonPath("$.data.donations[1].isSecret").value(false))
.andExpect(jsonPath("$.data.donations[1].nickname").value("donation-e2e-success-viewer"))
.andExpect(jsonPath("$.data.donations[1].profileImageUrl").value("https://cdn.test/donation-e2e-success-viewer.png"))
.andExpect(jsonPath("$.data.donations[1].can").value(200))
@@ -515,13 +515,13 @@ class CreatorChannelDonationEndToEndTest @Autowired constructor(
if (isOwner) assertEquals(stored.id, item["donationId"]?.asLong())
assertFalse(item.has("memberId"))
assertTrue(item["isSecret"].isBoolean)
assertEquals(stored.isSecret, item["isSecret"].asBoolean())
assertEquals(stored.can, item["can"].asInt())
assertEquals(
requireNotNull(stored.createdAt).atOffset(ZoneOffset.UTC).toInstant().toString(),
item["createdAtUtc"].asText()
)
val masked = stored.isSecret && fixture.viewer.id != fixture.creatorId && fixture.viewer.id != stored.member?.id
assertEquals(masked, item["isSecret"].asBoolean())
if (masked) {
assertEquals(anonymousNickname, item["nickname"].asText())
assertEquals(anonymousMessage, item["message"].asText())
@@ -542,6 +542,12 @@ class CreatorChannelDonationEndToEndTest @Autowired constructor(
assertEquals("https://cdn.test/$profile", item["profileImageUrl"].asText())
}
}
transactionTemplate.execute {
entityManager.clear()
fixture.donations.forEach { stored ->
assertEquals(stored.isSecret, entityManager.find(ChannelDonationMessage::class.java, stored.id).isSecret)
}
}
}
@Test
@@ -699,7 +705,6 @@ class CreatorChannelDonationEndToEndTest @Autowired constructor(
items.forEach { item ->
val can = item["can"].asInt()
val secret = can % 2 == 1
assertEquals(secret, item["isSecret"].asBoolean())
assertEquals(
start.plusHours((can / 2).toLong()).atOffset(ZoneOffset.UTC).toInstant().toString(),
item["createdAtUtc"].asText()
@@ -711,13 +716,15 @@ class CreatorChannelDonationEndToEndTest @Autowired constructor(
assertFalse(item.has("donationId"))
}
val masked = secret && viewer.id != fixture.creator.id && viewer.id != fixture.donor.id
assertEquals(masked, item["isSecret"].asBoolean())
assertEquals(if (masked) "익명" else fixture.donor.nickname, item["nickname"].asText())
assertEquals(if (masked) "크리에이터에게만 보여요" else "visible$can", item["message"].asText())
}
}
val ownerHome = requestThroughHttp("$path/home", HttpMethod.GET, fixture.creator)["data"]["channelDonations"]
val selected = ownerHome.first { it["isSecret"].asBoolean() == isSecret }
val selectedCan = if (isSecret) 9 else 8
val selected = ownerHome.first { it["can"].asInt() == selectedCan }
assertFalse(selected["isSecret"].asBoolean())
assertEquals(selectedCan, selected["can"].asInt())
assertEquals(rows[selectedCan - 1].id, selected["donationId"].asLong())
deleteThroughHttp(fixture.creator.id!!, selected["donationId"].asLong(), fixture.creator, true)
@@ -199,7 +199,7 @@ class CreatorChannelDonationQueryServiceTest {
assertEquals(if (masked) "크리에이터에게만 보여요" else message.orEmpty(), donation.message)
val profile = if (masked) "profile/anonymous-profile.png" else profilePath ?: "profile/default-profile.png"
assertEquals("https://cdn.test/$profile", donation.profileImageUrl)
assertEquals(isSecret, donation.isSecret)
assertEquals(masked, donation.isSecret)
assertEquals(100, donation.can)
assertEquals(NOW, donation.createdAt)
assertEquals(if (role == MemberRole.CREATOR && viewerId == CREATOR_ID) 101L else null, donation.donationId)