diff --git a/docs/자동차 기본 사항 조회 요청.txt b/docs/자동차 기본 사항 조회 요청.txt new file mode 100644 index 0000000..9af7c3a --- /dev/null +++ b/docs/자동차 기본 사항 조회 요청.txt @@ -0,0 +1,17 @@ +{ + "data" : [ { + "record" : [ { + "LEVY_STDDE" : "20250925", + "INQIRE_SE_CODE" : "3", + "VHRNO" : "999구9999", + "VIN" : null + } ], + "INFO_SYS_ID" : "41-345", + "INFO_SYS_IP" : "105.19.10.135", + "SIGUNGU_CODE" : "41460", + "CHARGER_ID" : "", + "CHARGER_IP" : "", + "CNTC_INFO_CODE" : "AC1_FD11_01", + "CHARGER_NM" : "" + } ] +} \ No newline at end of file diff --git a/docs/자동차 기본 사항 조회 응답.txt b/docs/자동차 기본 사항 조회 응답.txt new file mode 100644 index 0000000..18f29bc --- /dev/null +++ b/docs/자동차 기본 사항 조회 응답.txt @@ -0,0 +1,95 @@ +"data": [ + { + "CNTC_RESULT_DTLS": "정상", + "record": [ + { + "OWNER_ADRES_FULL": "충청북도 제천시 내토로17길 9999999(영천동)", + "DSPLVL": "2487", + "MTRS_FOM_NM": "A25A", + "REGIST_INSTT_NM": "경기도 용인시", + "TRANSR_REGIST_DE": "20240805", + "USE_STRNGHLD_BULD_MAIN_NO": "13", + "STMD_CO": null, + "ERSR_REGIST_SE_CODE": null, + "VLNT_ERSR_PRVNTC_NTICE_DE": null, + "COLOR_NM": "회색", + "MBER_SE_CODE": "11", + "OWNER_BULD_SUB_NO": null, + "FRNT_VHRNO": null, + "PRPOS_SE_CODE": "2", + "VHCTY_SE_CODE": "3", + "PROCESS_IMPRTY_RESN_CODE": "00", + "USGSRHLD_ADRES_FULL": "충청북도 제천시 내토로17길 9999999(영천동)", + "CBD_BT": "1865", + "FRST_REGIST_DE": "20191211", + "ACQS_AMOUNT": "0/57090909", + "OWNER_LNBR": null, + "OWNER_LEGALDONG_CODE": "4315011000", + "CHANGE_DE": "20191211", + "OWNER_ADSTRD_CODE": "4315054700", + "REGIST_DE": "20240805", + "PRYE": "2019", + "MBER_SE_NO": "9001011111111", + "ERSR_REGIST_DE": null, + "USGSRHLD_UNDGRND_BULD_SE_CODE": "0", + "CAAG_ENDDE": null, + "SPCF_REGIST_STTUS_CODE": "110205", + "INSPT_VALID_PD_BGNDE": "20231211", + "CBD_HG": "1445", + "OWNER_ADRES_NM": "(영천동)", + "VHCTY_ASORT_CODE": "1", + "VHCTY_TY_CODE": "1", + "VHCTY_ASORT_NM": "승용", + "MXMM_LDG": "0", + "ORIGIN_SE_CODE": "2", + "USE_STRNGHLD_MNTN": null, + "USE_STRNGHLD_LNBR": null, + "ACQS_DE": "20240805", + "OWNER_ROAD_NM_CODE": "431504517146", + "TELNO": "01026350158", + "AFTR_VHRNO": null, + "FUEL_CNSMP_RT": "17.0", + "SEIZR_CO": null, + "VHCTY_SE_NM": "대형", + "NMPL_STNDRD_CODE": "2", + "CNM": "렉서스 ES300h", + "PROCESS_IMPRTY_RESN_DTLS": "운행차량", + "FOM_NM": "AXZH10L", + "TRVL_DSTNC": "48568", + "TKCAR_PSCAP_CO": "5", + "USE_STRNGHLD_ROAD_NM_CODE": "431504517146", + "ERSR_REGIST_SE_NM": null, + "MBER_NM": "홍길동", + "SPMNNO": "01020006800001318", + "USE_STRNGHLD_HO": null, + "CBD_LT": "4975", + "YBL_MD": "20190910", + "USE_STRNGHLD_BULD_SUB_NO": null, + "MRTG_CO": null, + "USE_STRNGHLD_LEGALDONG_CODE": "4315011000", + "NMPL_CSDY_AT": null, + "FRST_REGIST_RQRCNO": "41142019121000019826", + "FRST_MXMM_LDG": "0", + "OWNER_MNTN": null, + "OWNER_BULD_MAIN_NO": "13", + "VHCTY_TY_NM": "일반", + "OWNER_UNDGRND_BULD_SE_CODE": "0", + "REGIST_DETAIL_CODE": "100", + "ACQS_END_DE": null, + "USE_STRNGHLD_ADSTRD_CODE": "4315054700", + "INSPT_VALID_PD_ENDDE": "20251210", + "USE_FUEL_CODE": "l", + "USE_STRNGHLD_GRC_CODE": "4314", + "ELCTY_CMPND_FUEL_CNSMP_RT": "0.0", + "USE_STRNGHLD_ADRES_NM": "(영천동)", + "VHCLE_TOT_WT": "2040", + "VIN": "JTHB21B19K2066924", + "OWNER_HO": null, + "VHRNO": "999구9999", + "NMPL_CSDY_REMNR_DE": null + } + ], + "CNTC_RESULT_CODE": "MSG50000" + } +] +} \ No newline at end of file diff --git a/docs/자동차 등록 원부 갑부 요청.txt b/docs/자동차 등록 원부 갑부 요청.txt new file mode 100644 index 0000000..6c5d4e6 --- /dev/null +++ b/docs/자동차 등록 원부 갑부 요청.txt @@ -0,0 +1,19 @@ +{ + "data" : [ { + "VHRNO" : "300소4026", + "ONES_INFORMATION_OPEN" : "1", + "CPTTR_NM" : "(주)엑스아이티", + "CPTTR_IHIDNUM" : "1101112429672", + "CPTTR_LEGALDONG_CODE" : null, + "ROUTE_SE_CODE" : "3", + "DETAIL_EXPRESSION" : "2", + "INQIRE_SE_CODE" : "1", + "INFO_SYS_ID" : "41-345", + "INFO_SYS_IP" : "105.19.10.135", + "SIGUNGU_CODE" : "41460", + "CHARGER_ID" : "", + "CHARGER_IP" : "", + "CNTC_INFO_CODE" : "AC1_FE08_01", + "CHARGER_NM" : "" + } ] +} \ No newline at end of file diff --git a/docs/자동차 등록 원부 갑부 응답.txt b/docs/자동차 등록 원부 갑부 응답.txt new file mode 100644 index 0000000..0a9a85e --- /dev/null +++ b/docs/자동차 등록 원부 갑부 응답.txt @@ -0,0 +1,123 @@ +{ + "data": [ + { + "VHMNO": "KNAEU81AESK782982-01", + "MTRS_FOM_NM": "G4NH", + "PRCS_IMPRTY_RSN_CD": "00", + "FRST_TRNSFR_YMD": "2025-02-05", + "MRTG_CNT": "0", + "COLOR_NM": "검정", + "ERSR_REG_SE_CD": null, + "CHCK_VLD_PD_END_YMD": null, + "NOPLT_CSDY_YN": "N", + "USG_SE_NM": "자가용", + "VEAG_END_YMD": null, + "record": [ + { + "CHG_YMD": "2025-02-11", + "VHMNO": "KNAEU81AESK782982-01", + "SPCABL_MTTR": "성명(상호) : 주식회사 엑스아이티 110111-2429672\n주소 : 서울특별시 강서구 *** ***-******, ****, *****, ********", + "CHG_TASK_SE_NM": "신규등록(신조차)", + "FLAG": null, + "SZR_RMV_DTL_SN": "1", + "MAIN_NO": "1-1", + "DTL_SN": "1", + "CHG_TASK_SE_CD": "01", + "SNO": null, + "APLY_RCPT_NO": "4102-202502-006998", + "LEDGER_INDIV_NO": "1", + "LEDGER_GROUP_NO": "1", + "HSHLDR_NM": "주식회사 엑스아이티", + "HSHLDR_IDECNO": "110111-2429672" + }, + { + "CHG_YMD": "2025-06-19", + "VHMNO": "KNAEU81AESK782982-01", + "SPCABL_MTTR": "촉탁기관 : 평택시청 구분:압류\r압류관리번호:1118-20250619-000053\n\r압류내역 : 평택시청 주정차위반과태료[2024-01-300001] 테스트과-12345 \n\r촉탁일자 : 2025-06-19", + "CHG_TASK_SE_NM": "압류등록(압류)", + "FLAG": null, + "SZR_RMV_DTL_SN": "3", + "MAIN_NO": "(1-2)", + "DTL_SN": "2", + "CHG_TASK_SE_CD": "41", + "SNO": null, + "APLY_RCPT_NO": "1118-250619-000053", + "LEDGER_INDIV_NO": "1", + "LEDGER_GROUP_NO": "1", + "HSHLDR_NM": "", + "HSHLDR_IDECNO": "" + }, + { + "CHG_YMD": "2025-06-19", + "VHMNO": "KNAEU81AESK782982-01", + "SPCABL_MTTR": "촉탁기관 : 평택시청 구분:압류\r압류관리번호:1118-20250619-000053\n\r압류명세 : 평택시청 주정차위반과태료[2024-01-300001] 테스트과-12345\n\r촉탁일자 : 2025-06-19", + "CHG_TASK_SE_NM": "압류해제(압류)", + "FLAG": null, + "SZR_RMV_DTL_SN": "4", + "MAIN_NO": null, + "DTL_SN": "3", + "CHG_TASK_SE_CD": "42", + "SNO": "(1-2)", + "APLY_RCPT_NO": "1118-202506-001237", + "LEDGER_INDIV_NO": "1", + "LEDGER_GROUP_NO": "1", + "HSHLDR_NM": "", + "HSHLDR_IDECNO": "" + } + ], + "TAXXMPT_TRPR_SE_CD": "0", + "SPCABL_MTTR_CNT": "0", + "DRVNG_DSTNC": null, + "NOPLT_CSDY_AVTSMT_YMD": null, + "ERSR_REG_SE_NM": null, + "OWNR_ADDR": "서울특별시 강서구 *** ***-******", + "DRIV_SRGBTRY_IDNTF_NO": null, + "YRIDNW": "2025", + "SPMNNO_1": "A01", + "BSS_USE_PD_YMD": null, + "LINK_RSLT_CD": "MSG50000", + "SPMNNO_2": "1-00068-0291-1224", + "SZR_CNT": "0", + "CARMDL_ASORT_CD": "1", + "USGSRHLD_ADDR_1": "서울특별시 강서구 *** ***-******", + "USGSRHLD_ADDR_DTL_1": "****", + "RPRS_OWNR_TELNO": "025811807", + "NOPLT_SPCFCT_CD": "2", + "REG_DTL_CD": "100", + "ACQS_AMT": "20,883,709", + "FOM_NM": "SP56EH-P6-G3A", + "LINK_RSLT_DTL": "정상", + "REG_APLY_SE_NM": "신조차", + "OCTHT_ERSR_PRVNTC_AVTSMT_YMD": null, + "OWNR_ADDR_DTL": "****", + "LEDGER_INDIV_NO": "1", + "LEDGER_GROUP_NO": "1", + "ISSU_NO": null, + "INSP_VLD_PD_END_YMD": "2030-02-10", + "CARMDL_ASORT_NM": "승용 중형", + "CHCK_VLD_PD_BGNG_YMD": null, + "USGSRHLD_DONG_NM": "가양1동", + "REG_DTL_NM": "일반소유용", + "NOPLT_SPCFCT_NM": "긴번호판", + "FBCTN_YMD": "2025-02-04", + "RPRSV_OWNR_IDECNO": "110111-2429672", + "FRST_REG_YMD": "2025-02-11", + "RPRS_OWNR_NM": "주식회사 엑스아이티", + "PRCS_IMPRTY_RSN_DTLS": "운행차량", + "FRST_REG_APLY_RCPT_NO": null, + "PRVNTC_CNT": "0", + "RPRS_OWNR_MBR_SE_CD": "13", + "TAXXMPT_APLCN_SE_CD": "미적용", + "ERSR_REG_YMD": null, + "COLOR_CD": "01", + "STRCT_CHG_CNT": null, + "INDVDL_BZMN_YN": null, + "VIN": "KNAEU81AESK782982", + "USG_SE_CD": "2", + "XPORT_FLFL_YN_DCLR_YMD": null, + "VHRNO": "300소4026", + "INSP_VLD_PD_BGNG_YMD": "2025-02-11", + "ATMB_NM": "셀토스" + } + ] +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/carInspectionPenalty/history/list.jsp b/src/main/webapp/WEB-INF/views/carInspectionPenalty/history/list.jsp index d216e03..3e8db10 100644 --- a/src/main/webapp/WEB-INF/views/carInspectionPenalty/history/list.jsp +++ b/src/main/webapp/WEB-INF/views/carInspectionPenalty/history/list.jsp @@ -39,7 +39,7 @@
  • diff --git a/src/test/java/go/kr/project/test/ComparisonServiceTest.java b/src/test/java/go/kr/project/test/ComparisonServiceTest.java new file mode 100644 index 0000000..c3c6b74 --- /dev/null +++ b/src/test/java/go/kr/project/test/ComparisonServiceTest.java @@ -0,0 +1,191 @@ +package go.kr.project.test; + +import com.fasterxml.jackson.databind.ObjectMapper; +import go.kr.project.api.model.VehicleApiResponseVO; +import go.kr.project.carInspectionPenalty.registration.mapper.CarFfnlgTrgtMapper; +import go.kr.project.carInspectionPenalty.registration.model.CarFfnlgTrgtVO; +import go.kr.project.carInspectionPenalty.registration.service.ComparisonService; +import go.kr.project.carInspectionPenalty.registration.service.impl.ComparisonServiceImpl; +import go.kr.project.system.user.mapper.UserMapper; +import go.kr.project.system.user.model.SystemUserVO; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.core.io.ClassPathResource; + +import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.when; + +/** + * ComparisonService 테스트 + * + *

    JSON 파일을 사용하여 API 연동 없이 비교 로직을 테스트합니다.

    + */ +@ExtendWith(MockitoExtension.class) +@DisplayName("과태료 대상 비교 서비스 테스트") +class ComparisonServiceTest { + + @Mock + private CarFfnlgTrgtMapper carFfnlgTrgtMapper; + + @Mock + private UserMapper userMapper; + + private ComparisonService comparisonService; + private ObjectMapper objectMapper; + + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd"); + + @BeforeEach + void setUp() { + comparisonService = new ComparisonServiceImpl(carFfnlgTrgtMapper, userMapper); + objectMapper = new ObjectMapper(); + + // 공통 Mock 설정: DB 업데이트는 항상 성공 (lenient 사용 - 모든 테스트에서 사용하지 않을 수 있음) + lenient().when(carFfnlgTrgtMapper.update(any(CarFfnlgTrgtVO.class))).thenReturn(1); + } + + @Test + @DisplayName("상품용 테스트 - 소유자명에 '상품용' 포함") + void testProductUse() throws IOException { + // Given: JSON 파일에서 테스트 데이터 로드 + VehicleApiResponseVO apiResponse = loadJsonFile("test-data/product-use-case.json"); + CarFfnlgTrgtVO existingData = createExistingData("12가3456"); + + // When: 비교 로직 실행 + String result = comparisonService.executeComparison(existingData, apiResponse, "USER001"); + + // Then: 상품용(02)으로 처리되어야 함 + assertEquals("02", result, "상품용으로 처리되어야 합니다"); + assertEquals("02", existingData.getTaskPrcsSttsCd(), "업무 처리 상태 코드가 02여야 합니다"); + assertEquals(LocalDate.now().format(DATE_FORMATTER), existingData.getTaskPrcsYmd(), + "처리 일자가 오늘 날짜여야 합니다"); + assertEquals("상품용", existingData.getCarBscMttrInqFlnm(), + "자동차 기본 사항 조회 성명이 저장되어야 합니다"); + assertNull(existingData.getCarBscMttrInqSggCd(), "이첩 관련 필드는 null이어야 합니다"); + assertNull(existingData.getCarBscMttrInqSggNm(), "이첩 관련 필드는 null이어야 합니다"); + + System.out.println("✅ 상품용 테스트 통과!"); + System.out.println(" - 차량번호: " + existingData.getVhclno()); + System.out.println(" - 처리 상태: " + existingData.getTaskPrcsSttsCd() + " (02=상품용)"); + System.out.println(" - 소유자명: " + existingData.getCarBscMttrInqFlnm()); + } + + @Test + @DisplayName("이첩 테스트 - 법정동코드 불일치") + void testTransfer() throws IOException { + // Given: JSON 파일에서 테스트 데이터 로드 + VehicleApiResponseVO apiResponse = loadJsonFile("test-data/transfer-case.json"); + CarFfnlgTrgtVO existingData = createExistingData("34나5678"); + + // Mock 설정: 사용자 조직코드 (법정동코드와 다름) + SystemUserVO userInfo = new SystemUserVO(); + userInfo.setUserId("USER001"); + userInfo.setOrgCd("1100"); // 서울(1100) - API의 경기(4100)와 다름 + when(userMapper.selectUser("USER001")).thenReturn(userInfo); + + // Mock 설정: 시군구명 조회 + when(carFfnlgTrgtMapper.selectSggNmBySggCd("41000")).thenReturn("경기도"); + + // When: 비교 로직 실행 + String result = comparisonService.executeComparison(existingData, apiResponse, "USER001"); + + // Then: 이첩(03)으로 처리되어야 함 + assertEquals("03", result, "이첩으로 처리되어야 합니다"); + assertEquals("03", existingData.getTaskPrcsSttsCd(), "업무 처리 상태 코드가 03이어야 합니다"); + assertEquals(LocalDate.now().format(DATE_FORMATTER), existingData.getTaskPrcsYmd(), + "처리 일자가 오늘 날짜여야 합니다"); + assertNull(existingData.getCarBscMttrInqFlnm(), "상품용 관련 필드는 null이어야 합니다"); + assertEquals("41000", existingData.getCarBscMttrInqSggCd(), "시군구 코드가 저장되어야 합니다"); + assertEquals("경기도", existingData.getCarBscMttrInqSggNm(), "시군구명이 저장되어야 합니다"); + + System.out.println("✅ 이첩 테스트 통과!"); + System.out.println(" - 차량번호: " + existingData.getVhclno()); + System.out.println(" - 처리 상태: " + existingData.getTaskPrcsSttsCd() + " (03=이첩)"); + System.out.println(" - 시군구: " + existingData.getCarBscMttrInqSggNm() + "(" + existingData.getCarBscMttrInqSggCd() + ")"); + System.out.println(" - 사유: 법정동코드 불일치 (API:4100, 조직:1100)"); + } + + @Test + @DisplayName("정상 처리 테스트 - 모든 비교 조건에 해당하지 않음") + void testNormal() throws IOException { + // Given: JSON 파일에서 테스트 데이터 로드 + VehicleApiResponseVO apiResponse = loadJsonFile("test-data/normal-case.json"); + CarFfnlgTrgtVO existingData = createExistingData("56다7890"); + + // Mock 설정: 사용자 조직코드 (법정동코드와 같음) + SystemUserVO userInfo = new SystemUserVO(); + userInfo.setUserId("USER001"); + userInfo.setOrgCd("1100"); // 서울(1100) - API도 서울(1100)로 일치 + when(userMapper.selectUser("USER001")).thenReturn(userInfo); + + // When: 비교 로직 실행 + String result = comparisonService.executeComparison(existingData, apiResponse, "USER001"); + + // Then: null 반환 (비교 조건에 해당하지 않음) + assertNull(result, "비교 조건에 해당하지 않으면 null을 반환해야 합니다"); + + System.out.println("✅ 정상 처리 테스트 통과!"); + System.out.println(" - 차량번호: " + existingData.getVhclno()); + System.out.println(" - 처리 결과: 정상 (비교 조건 미해당)"); + System.out.println(" - 소유자명에 '상품용' 없음"); + System.out.println(" - 법정동코드 일치 (API:1100, 조직:1100)"); + } + + @Test + @DisplayName("순서 테스트 - 상품용이 먼저 체크되어야 함") + void testPriority() throws IOException { + // Given: 상품용이면서 법정동코드도 불일치한 케이스 + VehicleApiResponseVO apiResponse = loadJsonFile("test-data/product-use-case.json"); + CarFfnlgTrgtVO existingData = createExistingData("12가3456"); + + // Mock 설정: 사용자 조직코드를 다르게 설정 (이첩 조건도 만족) + // 주의: 상품용이 먼저 체크되므로 이 stub은 실제로 사용되지 않을 수 있음 (lenient 사용) + SystemUserVO userInfo = new SystemUserVO(); + userInfo.setUserId("USER001"); + userInfo.setOrgCd("4100"); // API는 1100이므로 법정동코드 불일치 + lenient().when(userMapper.selectUser("USER001")).thenReturn(userInfo); + + // When: 비교 로직 실행 + String result = comparisonService.executeComparison(existingData, apiResponse, "USER001"); + + // Then: 상품용(02)으로 처리되어야 함 (상품용이 우선순위 높음) + assertEquals("02", result, "상품용과 이첩 조건을 모두 만족해도 상품용이 우선입니다"); + assertEquals("02", existingData.getTaskPrcsSttsCd()); + + System.out.println("✅ 순서 테스트 통과!"); + System.out.println(" - 상품용과 이첩 조건 모두 만족"); + System.out.println(" - 결과: " + existingData.getTaskPrcsSttsCd() + " (상품용 우선)"); + } + + /** + * JSON 파일을 읽어서 VehicleApiResponseVO로 변환 + */ + private VehicleApiResponseVO loadJsonFile(String filePath) throws IOException { + ClassPathResource resource = new ClassPathResource(filePath); + return objectMapper.readValue(resource.getInputStream(), VehicleApiResponseVO.class); + } + + /** + * 테스트용 기존 데이터 생성 + */ + private CarFfnlgTrgtVO createExistingData(String vhclno) { + CarFfnlgTrgtVO vo = new CarFfnlgTrgtVO(); + vo.setCarFfnlgTrgtId("CFT00000000000000001"); + vo.setVhclno(vhclno); + vo.setOwnrNm("테스트"); + vo.setTaskPrcsSttsCd("01"); // 접수 상태 + vo.setRcptYmd(LocalDate.now().format(DATE_FORMATTER)); + return vo; + } +} diff --git a/src/test/resources/test-data/normal-case.json b/src/test/resources/test-data/normal-case.json new file mode 100644 index 0000000..fb7f481 --- /dev/null +++ b/src/test/resources/test-data/normal-case.json @@ -0,0 +1,35 @@ +{ + "vhrno": "56다7890", + "success": true, + "message": "조회 성공", + "basicInfo": { + "CNTC_RESULT_CODE": "MSG50000", + "CNTC_RESULT_DTLS": "정상", + "record": [ + { + "VHRNO": "56다7890", + "MBER_NM": "김철수", + "MBER_SE_CODE": "1", + "MBER_SE_NO": "1112223334445", + "USE_STRNGHLD_LEGALDONG_CODE": "1100000000", + "USE_STRNGHLD_ADRES_NM": "서울특별시 강남구 테헤란로 123", + "OWNER_ADRES_NM": "서울특별시 강남구 테헤란로 123", + "CNM": "아반떼", + "VHCTY_ASORT_NM": "승용차", + "VHCTY_TY_NM": "소형", + "VHCTY_SE_NM": "일반형", + "PRYE": "2021", + "REGIST_DE": "20210701", + "FRST_REGIST_DE": "20210701", + "INSPT_VALID_PD_BGNDE": "20230701", + "INSPT_VALID_PD_ENDDE": "20250701", + "ERSR_REGIST_SE_CODE": "", + "ERSR_REGIST_DE": "" + } + ] + }, + "ledgerInfo": { + "VHRNO": "56다7890", + "VIN": "KMHZZ00ZZZZ222222" + } +} diff --git a/src/test/resources/test-data/product-use-case.json b/src/test/resources/test-data/product-use-case.json new file mode 100644 index 0000000..ebaf0b1 --- /dev/null +++ b/src/test/resources/test-data/product-use-case.json @@ -0,0 +1,35 @@ +{ + "vhrno": "12가3456", + "success": true, + "message": "조회 성공", + "basicInfo": { + "CNTC_RESULT_CODE": "MSG50000", + "CNTC_RESULT_DTLS": "정상", + "record": [ + { + "VHRNO": "12가3456", + "MBER_NM": "상품용", + "MBER_SE_CODE": "1", + "MBER_SE_NO": "1234567890123", + "USE_STRNGHLD_LEGALDONG_CODE": "1100000000", + "USE_STRNGHLD_ADRES_NM": "서울특별시 중구 세종대로 110", + "OWNER_ADRES_NM": "서울특별시 중구 세종대로 110", + "CNM": "그랜저", + "VHCTY_ASORT_NM": "승용차", + "VHCTY_TY_NM": "소형", + "VHCTY_SE_NM": "일반형", + "PRYE": "2020", + "REGIST_DE": "20200101", + "FRST_REGIST_DE": "20200101", + "INSPT_VALID_PD_BGNDE": "20230101", + "INSPT_VALID_PD_ENDDE": "20250101", + "ERSR_REGIST_SE_CODE": "", + "ERSR_REGIST_DE": "" + } + ] + }, + "ledgerInfo": { + "VHRNO": "12가3456", + "VIN": "KMHXX00XXXX000000" + } +} diff --git a/src/test/resources/test-data/transfer-case.json b/src/test/resources/test-data/transfer-case.json new file mode 100644 index 0000000..b8dab33 --- /dev/null +++ b/src/test/resources/test-data/transfer-case.json @@ -0,0 +1,35 @@ +{ + "vhrno": "34나5678", + "success": true, + "message": "조회 성공", + "basicInfo": { + "CNTC_RESULT_CODE": "MSG50000", + "CNTC_RESULT_DTLS": "정상", + "record": [ + { + "VHRNO": "34나5678", + "MBER_NM": "홍길동", + "MBER_SE_CODE": "1", + "MBER_SE_NO": "9876543210987", + "USE_STRNGHLD_LEGALDONG_CODE": "4100000000", + "USE_STRNGHLD_ADRES_NM": "경기도 수원시 팔달구 효원로 1", + "OWNER_ADRES_NM": "경기도 수원시 팔달구 효원로 1", + "CNM": "소나타", + "VHCTY_ASORT_NM": "승용차", + "VHCTY_TY_NM": "중형", + "VHCTY_SE_NM": "일반형", + "PRYE": "2019", + "REGIST_DE": "20190315", + "FRST_REGIST_DE": "20190315", + "INSPT_VALID_PD_BGNDE": "20220315", + "INSPT_VALID_PD_ENDDE": "20240315", + "ERSR_REGIST_SE_CODE": "", + "ERSR_REGIST_DE": "" + } + ] + }, + "ledgerInfo": { + "VHRNO": "34나5678", + "VIN": "KMHYY00YYYY111111" + } +}