From 25f0d2bab5040cb40030f0311f054a1ed60328b0 Mon Sep 17 00:00:00 2001 From: jade Date: Mon, 27 Jul 2026 14:01:04 +0900 Subject: [PATCH] feat: move Onnba MCI request conversion to use case --- .../biz/oth/converter/Onnba3011Converter.java | 29 ++++++++++ .../impl/OnnbaMciToolUseCaseImplTest.java | 46 ++++++++++++++++ .../Onnba3011MciRequestConverterTest.java | 55 +++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java create mode 100644 dap-tool-oth/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/OnnbaMciToolUseCaseImplTest.java create mode 100644 dap-tool-oth/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java new file mode 100644 index 00000000..97c6820c --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java @@ -0,0 +1,29 @@ +package io.shinhanlife.dap.mcc.biz.oth.converter; + +import io.shinhanlife.dap.mcc.biz.oth.dto.Onnba3011Request; +import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_I; +import org.mapstruct.Mapper; + +/** + * @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.converter + * @className Onnba3011Converter + * @description Converts ONNBA tool input into the CLCNNB00001 MCI payload + * @author 0986406 + * @create 2026.07.27 + *
+ * ---------- revision history ----------
+ * date       author    description
+ * ---------- --------- ---------------------------
+ * 2026.07.27 0986406    initial creation
+ * 
+ */ +@Mapper(componentModel = "spring") +public interface Onnba3011Converter { + + CLCNNB00001_I toMciRequest(Onnba3011Request source); + + CLCNNB00001_I.UnfcPrbuIrcoAdduDto toUnfcPrbuIrcoAddu( + Onnba3011Request.UnfcPrbuIrcoAdduDto source); + + CLCNNB00001_I.SucoIspaBasDto toSucoIspaBas(Onnba3011Request.SucoIspaBasDto source); +} diff --git a/dap-tool-oth/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/OnnbaMciToolUseCaseImplTest.java b/dap-tool-oth/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/OnnbaMciToolUseCaseImplTest.java new file mode 100644 index 00000000..031de830 --- /dev/null +++ b/dap-tool-oth/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/OnnbaMciToolUseCaseImplTest.java @@ -0,0 +1,46 @@ +package io.shinhanlife.dap.mcc.biz.oth.usecase.impl; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import io.shinhanlife.dap.mcc.biz.oth.converter.Onnba3011Converter; +import io.shinhanlife.dap.mcc.biz.oth.dto.Onnba3011Request; +import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.MciCfpaClient; +import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_I; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +/** + * @package io.shinhanlife.dap.mcc.biz.oth.usecase.impl + * @className OnnbaMciToolUseCaseImplTest + * @description ONNBA MCI tool use case test + * @author 0986406 + * @create 2026.07.27 + *
+ * ---------- revision history ----------
+ * date       author    description
+ * ---------- --------- ---------------------------
+ * 2026.07.27 0986406    initial creation
+ * 
+ */ +class OnnbaMciToolUseCaseImplTest { + + @Test + void convertsToolRequestBeforeCallingMciClient() throws Exception { + MciCfpaClient mciCfpaClient = Mockito.mock(MciCfpaClient.class); + Onnba3011Converter converter = Mockito.mock(Onnba3011Converter.class); + OnnbaMciToolUseCaseImpl useCase = new OnnbaMciToolUseCaseImpl(mciCfpaClient, converter); + Onnba3011Request request = new Onnba3011Request(); + CLCNNB00001_I mciRequest = new CLCNNB00001_I(); + + when(converter.toMciRequest(request)).thenReturn(mciRequest); + when(mciCfpaClient.callCfpa0001(mciRequest)).thenReturn("success"); + + Object result = useCase.callOnnba3011(request); + + assertEquals("success", result); + verify(converter).toMciRequest(request); + verify(mciCfpaClient).callCfpa0001(mciRequest); + } +} diff --git a/dap-tool-oth/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java b/dap-tool-oth/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java new file mode 100644 index 00000000..d7e3a564 --- /dev/null +++ b/dap-tool-oth/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java @@ -0,0 +1,55 @@ +package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.converter; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import io.shinhanlife.dap.mcc.biz.oth.converter.Onnba3011Converter; +import io.shinhanlife.dap.mcc.biz.oth.dto.Onnba3011Request; +import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_I; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; + +/** + * @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.converter + * @className Onnba3011MciRequestConverterTest + * @description ONNBA 3011 request converter test + * @author 0986406 + * @create 2026.07.27 + *
+ * ---------- revision history ----------
+ * date       author    description
+ * ---------- --------- ---------------------------
+ * 2026.07.27 0986406    initial creation
+ * 
+ */ +class Onnba3011MciRequestConverterTest { + + private final Onnba3011Converter converter = Mappers.getMapper(Onnba3011Converter.class); + + @Test + void mapsRootAndNestedRequestFieldsToMciPayload() { + Onnba3011Request source = request(); + + CLCNNB00001_I result = converter.toMciRequest(source); + + assertEquals("A", result.getDalScCd()); + assertEquals("123456", result.getCsNo()); + assertNotNull(result.getUnfcPrbuIrcoAddu()); + assertNotNull(result.getSucoIspaBasDto()); + assertEquals("01", result.getSucoIspaBasDto().getCcnDalTypCd()); + assertEquals("20260727", result.getSucoIspaBasDto().getSucoYmd()); + } + + private Onnba3011Request request() { + Onnba3011Request request = new Onnba3011Request(); + request.setDalScCd("A"); + request.setCsNo("123456"); + request.setUnfcPrbuIrcoAddu(new Onnba3011Request.UnfcPrbuIrcoAdduDto()); + + Onnba3011Request.SucoIspaBasDto suco = new Onnba3011Request.SucoIspaBasDto(); + suco.setCcnDalTypCd("01"); + suco.setSucoYmd("20260727"); + request.setSucoIspaBasDto(suco); + return request; + } +}