diff --git a/src/test/java/roomescape/payment/web/support/PaymentCancelResponseDeserializerTest.kt b/src/test/java/roomescape/payment/web/support/PaymentCancelResponseDeserializerTest.kt index c88f9e96..d440f41b 100644 --- a/src/test/java/roomescape/payment/web/support/PaymentCancelResponseDeserializerTest.kt +++ b/src/test/java/roomescape/payment/web/support/PaymentCancelResponseDeserializerTest.kt @@ -1,54 +1,35 @@ -package roomescape.payment.web.support; +package roomescape.payment.web.support -import static org.junit.jupiter.api.Assertions.*; +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.module.SimpleModule +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import io.kotest.assertions.assertSoftly +import io.kotest.core.spec.style.StringSpec +import io.kotest.matchers.shouldBe +import roomescape.payment.SampleTossPaymentConst +import roomescape.payment.web.dto.response.PaymentCancelResponse -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; +class PaymentCancelResponseDeserializerTest : StringSpec({ -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; + val objectMapper: ObjectMapper = jacksonObjectMapper().registerModule( + SimpleModule().addDeserializer( + PaymentCancelResponse::class.java, + PaymentCancelResponseDeserializer() + ) + ) -import roomescape.payment.web.dto.response.PaymentCancelResponse; + "결제 취소 응답을 역직렬화하여 PaymentCancelResponse 객체를 생성한다" { + val cancelResponseJson: String = SampleTossPaymentConst.cancelJson + val cancelResponse: PaymentCancelResponse = objectMapper.readValue( + cancelResponseJson, + PaymentCancelResponse::class.java + ) -class PaymentCancelResponseDeserializerTest { - - private ObjectMapper objectMapper; - - @BeforeEach - void setUp() { - objectMapper = new ObjectMapper(); - SimpleModule simpleModule = new SimpleModule(); - simpleModule.addDeserializer(PaymentCancelResponse.class, new PaymentCancelResponseDeserializer()); - objectMapper.registerModule(simpleModule); - } - - @Test - @DisplayName("결제 취소 정보를 역직렬화하여 PaymentCancelResponse 객체를 생성한다.") - void deserialize() { - // given - String json = """ - { - "notUsedField": "notUsedValue", - "cancels": [ - { - "cancelStatus": "CANCELLED", - "cancelReason": "테스트 결제 취소", - "cancelAmount": 10000, - "canceledAt": "2021-07-01T10:10:10+09:00", - "notUsedField": "notUsedValue" - } - ] - }"""; - - // when - PaymentCancelResponse response = assertDoesNotThrow( - () -> objectMapper.readValue(json, PaymentCancelResponse.class)); - - // then - assertEquals("CANCELLED", response.cancelStatus()); - assertEquals("테스트 결제 취소", response.cancelReason()); - assertEquals(10000, response.cancelAmount()); - assertEquals("2021-07-01T10:10:10+09:00", response.canceledAt().toString()); - } -} + assertSoftly(cancelResponse) { + cancelResponse.cancelStatus shouldBe "DONE" + cancelResponse.cancelReason shouldBe SampleTossPaymentConst.cancelReason + cancelResponse.cancelAmount shouldBe SampleTossPaymentConst.amount + cancelResponse.canceledAt.toString() shouldBe "2024-02-13T12:20:23+09:00" + } + } +})