상품용, 이첩 TEST CASE 작성, 테스트 진행
parent
1f442a9472
commit
732a977b67
@ -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" : ""
|
||||
} ]
|
||||
}
|
||||
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -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" : ""
|
||||
} ]
|
||||
}
|
||||
@ -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": "셀토스"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -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 테스트
|
||||
*
|
||||
* <p>JSON 파일을 사용하여 API 연동 없이 비교 로직을 테스트합니다.</p>
|
||||
*/
|
||||
@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;
|
||||
}
|
||||
}
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
@ -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"
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue