From 112ad755e5d0a09e46c6adb54e678bc0df4164db Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 2 Oct 2026 20:07:06 +0900 Subject: [PATCH] =?UTF-8?q?fix(gift):=20=EC=A0=84=EB=8B=AC=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=20=EA=B0=80=EB=8A=A5=20=EC=95=A1=EC=85=98=EC=9D=98=20?= =?UTF-8?q?=EC=88=98=EC=B7=A8=EC=9D=B8=20=EC=A1=B0=EA=B1=B4=EC=9D=84=20?= =?UTF-8?q?=EB=B0=98=EC=98=81=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gift/application/GiftAdminQueryService.kt | 12 ++++--- .../application/GiftAdminQueryServiceTest.kt | 33 ++++++++++++++++++- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/application/GiftAdminQueryService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/application/GiftAdminQueryService.kt index 13cb9d06..f9996146 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/application/GiftAdminQueryService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/application/GiftAdminQueryService.kt @@ -137,7 +137,7 @@ class GiftAdminQueryService( ), status = gift.status, statusName = gift.status.displayName, - availableActions = gift.status.availableActions() + availableActions = gift.status.availableActions(delivery) ) } @@ -153,13 +153,17 @@ class GiftAdminQueryService( trackingNumber = context.delivery(this).trackingNumber, status = status, statusName = status.displayName, - availableActions = status.availableActions() + availableActions = status.availableActions(context.delivery(this)) ) - private fun GiftStatus.availableActions() = when (this) { + private fun GiftStatus.availableActions(delivery: GiftDelivery) = when (this) { GiftStatus.TRACKING_REGISTERED -> listOf("ARRIVE_MAILBOX", "MARK_UNDELIVERABLE") GiftStatus.ARRIVED_AT_MAILBOX -> listOf("COMPLETE_INSPECTION", "MARK_UNDELIVERABLE") - GiftStatus.INSPECTION_COMPLETED -> listOf("COMPLETE_DELIVERY", "MARK_UNDELIVERABLE") + GiftStatus.INSPECTION_COMPLETED -> if (delivery.hasCompleteRecipientInformation()) { + listOf("COMPLETE_DELIVERY", "MARK_UNDELIVERABLE") + } else { + listOf("MARK_UNDELIVERABLE") + } GiftStatus.RECEIVED, GiftStatus.DELIVERED, GiftStatus.UNDELIVERABLE, GiftStatus.CANCELED -> emptyList() } diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/gift/application/GiftAdminQueryServiceTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/gift/application/GiftAdminQueryServiceTest.kt index a2c50924..1af001b9 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/gift/application/GiftAdminQueryServiceTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/gift/application/GiftAdminQueryServiceTest.kt @@ -146,9 +146,13 @@ class GiftAdminQueryServiceTest @Autowired constructor( service.getGiftDetail("A-100260930102").availableActions ) assertEquals( - listOf("COMPLETE_DELIVERY", "MARK_UNDELIVERABLE"), + 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(), service.getGiftDetail("A-100260930104").availableActions) assertEquals(emptyList(), service.getGiftDetail("A-100260930105").availableActions) assertEquals(emptyList(), service.getGiftDetail("A-100260930106").availableActions) @@ -158,6 +162,33 @@ class GiftAdminQueryServiceTest @Autowired constructor( assertEquals("common.error.invalid_request", exception.messageKey) } + @Test + @DisplayName("수취인 정보가 입력된 검수 완료 선물만 전달 완료 액션을 반환한다") + fun shouldReturnCompleteDeliveryActionOnlyWithRecipientAddress() { + val sender = saveMember("fan-alpha") + val recipient = saveMember("creator-alpha") + val category = saveCategory() + val gift = saveGift( + applicationNo = "A-1002609300001", + sender = sender, + recipient = recipient, + category = category, + status = GiftStatus.INSPECTION_COMPLETED + ) + requireNotNull(deliveryRepository.findByGiftId(requireNotNull(gift.id))).apply { + recipientName = "김소다" + recipientPhoneNumber = "01098765432" + recipientZipCode = "04524" + recipientAddress = "서울시 중구" + } + + val detail = service().getGiftDetail(gift.applicationNo) + val listItem = service().getGifts(GiftStatus.INSPECTION_COMPLETED, null, null, 0, 20).items.single() + + assertEquals(listOf("COMPLETE_DELIVERY", "MARK_UNDELIVERABLE"), detail.availableActions) + assertEquals(listOf("COMPLETE_DELIVERY", "MARK_UNDELIVERABLE"), listItem.availableActions) + } + private fun service() = GiftAdminQueryService( giftRepository = giftRepository, deliveryRepository = deliveryRepository,