refactor: PaymentCancelResponseDeserializer 테스트 코틀린 마이그레이션

This commit is contained in:
이상진 2025-07-15 17:34:56 +09:00
parent 4af6c86cfb
commit 2fca7b2cd1

View File

@ -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; class PaymentCancelResponseDeserializerTest : StringSpec({
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.databind.ObjectMapper; val objectMapper: ObjectMapper = jacksonObjectMapper().registerModule(
import com.fasterxml.jackson.databind.module.SimpleModule; 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 { assertSoftly(cancelResponse) {
cancelResponse.cancelStatus shouldBe "DONE"
private ObjectMapper objectMapper; cancelResponse.cancelReason shouldBe SampleTossPaymentConst.cancelReason
cancelResponse.cancelAmount shouldBe SampleTossPaymentConst.amount
@BeforeEach cancelResponse.canceledAt.toString() shouldBe "2024-02-13T12:20:23+09:00"
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());
} }
} }
})