feat(gift): 관리자 선물 목록과 상세에 취소 액션을 노출한다

This commit is contained in:
2026-10-22 18:24:01 +09:00
parent 710b49c175
commit c6f9142c69
2 changed files with 16 additions and 21 deletions
@@ -157,6 +157,7 @@ class GiftAdminQueryService(
) )
private fun GiftStatus.availableActions(delivery: GiftDelivery) = when (this) { private fun GiftStatus.availableActions(delivery: GiftDelivery) = when (this) {
GiftStatus.RECEIVED -> listOf("CANCEL")
GiftStatus.TRACKING_REGISTERED -> listOf("ARRIVE_MAILBOX", "MARK_UNDELIVERABLE") GiftStatus.TRACKING_REGISTERED -> listOf("ARRIVE_MAILBOX", "MARK_UNDELIVERABLE")
GiftStatus.ARRIVED_AT_MAILBOX -> listOf("COMPLETE_INSPECTION", "MARK_UNDELIVERABLE") GiftStatus.ARRIVED_AT_MAILBOX -> listOf("COMPLETE_INSPECTION", "MARK_UNDELIVERABLE")
GiftStatus.INSPECTION_COMPLETED -> if (delivery.hasCompleteRecipientInformation()) { GiftStatus.INSPECTION_COMPLETED -> if (delivery.hasCompleteRecipientInformation()) {
@@ -164,7 +165,7 @@ class GiftAdminQueryService(
} else { } else {
listOf("MARK_UNDELIVERABLE") listOf("MARK_UNDELIVERABLE")
} }
GiftStatus.RECEIVED, GiftStatus.DELIVERED, GiftStatus.UNDELIVERABLE, GiftStatus.CANCELED -> emptyList() GiftStatus.DELIVERED, GiftStatus.UNDELIVERABLE, GiftStatus.CANCELED -> emptyList()
} }
private fun GiftDelivery.recipientAddressResult(): String { private fun GiftDelivery.recipientAddressResult(): String {
@@ -125,7 +125,7 @@ class GiftAdminQueryServiceTest @Autowired constructor(
} }
@Test @Test
@DisplayName("관리자 선물 상세는 상태별 가능한 액션을 반환하고 없는 신청번호를 거부한다") @DisplayName("관리자 선물 목록과 상세는 상태별 가능한 액션을 반환하고 없는 신청번호를 거부한다")
fun shouldReturnAvailableActionsByStatusAndRejectUnknownApplicationNo() { fun shouldReturnAvailableActionsByStatusAndRejectUnknownApplicationNo() {
val sender = saveMember("fan-alpha") val sender = saveMember("fan-alpha")
val recipient = saveMember("creator-alpha") val recipient = saveMember("creator-alpha")
@@ -136,26 +136,20 @@ class GiftAdminQueryServiceTest @Autowired constructor(
val service = service() val service = service()
assertEquals(emptyList<String>(), service.getGiftDetail("A-100260930100").availableActions) val expectedActions = mapOf(
assertEquals( GiftStatus.RECEIVED to listOf("CANCEL"),
listOf("ARRIVE_MAILBOX", "MARK_UNDELIVERABLE"), GiftStatus.TRACKING_REGISTERED to listOf("ARRIVE_MAILBOX", "MARK_UNDELIVERABLE"),
service.getGiftDetail("A-100260930101").availableActions GiftStatus.ARRIVED_AT_MAILBOX to listOf("COMPLETE_INSPECTION", "MARK_UNDELIVERABLE"),
GiftStatus.INSPECTION_COMPLETED to listOf("MARK_UNDELIVERABLE"),
GiftStatus.DELIVERED to emptyList(),
GiftStatus.UNDELIVERABLE to emptyList(),
GiftStatus.CANCELED to emptyList()
) )
assertEquals( expectedActions.forEach { (status, actions) ->
listOf("COMPLETE_INSPECTION", "MARK_UNDELIVERABLE"), val item = service.getGifts(status, null, null, 0, 20).items.single()
service.getGiftDetail("A-100260930102").availableActions assertEquals(actions, service.getGiftDetail(item.applicationNo).availableActions, status.name)
) assertEquals(actions, item.availableActions, status.name)
assertEquals( }
listOf("MARK_UNDELIVERABLE"),
service.getGiftDetail("A-100260930103").availableActions
)
assertEquals(
listOf("MARK_UNDELIVERABLE"),
service.getGifts(GiftStatus.INSPECTION_COMPLETED, null, null, 0, 20).items.single().availableActions
)
assertEquals(emptyList<String>(), service.getGiftDetail("A-100260930104").availableActions)
assertEquals(emptyList<String>(), service.getGiftDetail("A-100260930105").availableActions)
assertEquals(emptyList<String>(), service.getGiftDetail("A-100260930106").availableActions)
val exception = assertThrows(SodaException::class.java) { val exception = assertThrows(SodaException::class.java) {
service.getGiftDetail("UNKNOWN") service.getGiftDetail("UNKNOWN")
} }