Browse Source

refactor: 테스트 코드보완, 가상데이터 넣어줄 시 Context 정보 추가

pull/9/head
lkd9125(이경도) 7 months ago
parent
commit
f73b3a21c6
  1. 8
      app/kac-app/src/test/java/kr/co/palnet/kac/BaseTest.java
  2. 81
      app/kac-app/src/test/java/kr/co/palnet/kac/flt/laanc/FlightLaancControllerTest.java
  3. 4
      data/flt/src/main/java/kr/co/palnet/kac/data/flt/service/FltPlanDomainService.java
  4. 30
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/FltPlanBasDTO.java
  5. 4
      web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/service/FlightLaancService.java

8
app/kac-app/src/test/java/kr/co/palnet/kac/BaseTest.java

@ -15,7 +15,9 @@ import org.springframework.mock.web.MockFilterConfig;
import org.springframework.restdocs.RestDocumentationContextProvider; import org.springframework.restdocs.RestDocumentationContextProvider;
import org.springframework.restdocs.RestDocumentationExtension; import org.springframework.restdocs.RestDocumentationExtension;
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation; import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.config.BeanIds; import org.springframework.security.config.BeanIds;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.WebApplicationContext;
@ -111,6 +113,12 @@ public class BaseTest {
BaseUserDetails userDetails = (BaseUserDetails) baseUserDetailsService.loadUserByUsername(username); BaseUserDetails userDetails = (BaseUserDetails) baseUserDetailsService.loadUserByUsername(username);
UsernamePasswordAuthenticationToken userToken = new UsernamePasswordAuthenticationToken(
userDetails, null, userDetails.getAuthorities()
);
SecurityContextHolder.getContext().setAuthentication(userToken);
return JwtUtil.makeAuthToken(userDetails); return JwtUtil.makeAuthToken(userDetails);
} }

81
app/kac-app/src/test/java/kr/co/palnet/kac/flt/laanc/FlightLaancControllerTest.java

@ -1,6 +1,7 @@
package kr.co.palnet.kac.flt.laanc; package kr.co.palnet.kac.flt.laanc;
import kr.co.palnet.kac.BaseTest; import kr.co.palnet.kac.BaseTest;
import kr.co.palnet.kac.api.v1.flight.laanc.model.FltPlanBasDTO;
import kr.co.palnet.kac.api.v1.flight.laanc.model.create.CreateLaancPlanRQ; import kr.co.palnet.kac.api.v1.flight.laanc.model.create.CreateLaancPlanRQ;
import kr.co.palnet.kac.api.v1.flight.laanc.service.FlightLaancService; import kr.co.palnet.kac.api.v1.flight.laanc.service.FlightLaancService;
import kr.co.palnet.kac.config.security.util.SessionHelper; import kr.co.palnet.kac.config.security.util.SessionHelper;
@ -45,10 +46,7 @@ public class FlightLaancControllerTest extends BaseTest {
public void getLaancAprvDetail() throws Exception{ public void getLaancAprvDetail() throws Exception{
String token = this.getUserToken(); String token = this.getUserToken();
String planSno = this.testCreatePlan().toString(); String planSno = this.testCreatePlan().getPlanSno().toString();
String confirmKey = UUID.randomUUID().toString();
flightLaancService.testCreateQRCode(confirmKey, this.CREATE_USERNAME);
this.mockMvc.perform( this.mockMvc.perform(
RestDocumentationRequestBuilders.get(this.BASE_URL + "/detail/{planSno}", planSno) RestDocumentationRequestBuilders.get(this.BASE_URL + "/detail/{planSno}", planSno)
@ -157,13 +155,12 @@ public class FlightLaancControllerTest extends BaseTest {
@Transactional @Transactional
public void getLaancAprvList() throws Exception{ public void getLaancAprvList() throws Exception{
// TODO::TEST로 만들 비행계획서 필요함 // TODO::TEST로 만들 비행계획서 필요함
String token = this.getUserToken();
String planSno = this.testCreatePlan().toString(); FltPlanBasDTO fltPlanBasDto = this.testCreatePlan();
String createStDate = "2024-02-23";
String createEndDate = "2024-02-23";
String token = this.getUserToken(); String createStDate = fltPlanBasDto.getCreateDt().toLocalDate().minusDays(1).toString();
String createEndDate = fltPlanBasDto.getCreateDt().toLocalDate().plusDays(1).toString();
this.mockMvc.perform( this.mockMvc.perform(
get(this.BASE_URL + "/list") get(this.BASE_URL + "/list")
@ -186,33 +183,33 @@ public class FlightLaancControllerTest extends BaseTest {
parameterWithName("memberName").description("이름").optional() parameterWithName("memberName").description("이름").optional()
), ),
responseFields( responseFields(
fieldWithPath("[].planSno").type(JsonFieldType.NUMBER).description("비행계획서 일련번호"), fieldWithPath("[].planSno").type(JsonFieldType.NUMBER).description("비행계획서 일련번호").optional(),
fieldWithPath("[].groupId").type(JsonFieldType.STRING).description("그룹 아이디"), fieldWithPath("[].groupId").type(JsonFieldType.STRING).description("그룹 아이디").optional(),
fieldWithPath("[].cstmrSno").type(JsonFieldType.NUMBER).description("작성자 일련번호"), fieldWithPath("[].cstmrSno").type(JsonFieldType.NUMBER).description("작성자 일련번호").optional(),
fieldWithPath("[].memberName").type(JsonFieldType.STRING).description("작성자 이름"), fieldWithPath("[].memberName").type(JsonFieldType.STRING).description("작성자 이름").optional(),
fieldWithPath("[].email").type(JsonFieldType.STRING).description("이메일"), fieldWithPath("[].email").type(JsonFieldType.STRING).description("이메일").optional(),
fieldWithPath("[].hpno").type(JsonFieldType.STRING).description("연락처"), fieldWithPath("[].hpno").type(JsonFieldType.STRING).description("연락처").optional(),
fieldWithPath("[].clncd").type(JsonFieldType.STRING).description("국가번호(연락처)"), fieldWithPath("[].clncd").type(JsonFieldType.STRING).description("국가번호(연락처)").optional(),
fieldWithPath("[].addr").type(JsonFieldType.STRING).description("주소").optional(), fieldWithPath("[].addr").type(JsonFieldType.STRING).description("주소").optional(),
fieldWithPath("[].addrDtlCn").type(JsonFieldType.STRING).description("상세주소").optional(), fieldWithPath("[].addrDtlCn").type(JsonFieldType.STRING).description("상세주소").optional(),
fieldWithPath("[].zip").type(JsonFieldType.STRING).description("우편번호").optional(), fieldWithPath("[].zip").type(JsonFieldType.STRING).description("우편번호").optional(),
fieldWithPath("[].schFltStDt").type(JsonFieldType.STRING).description("비행시작일시"), fieldWithPath("[].schFltStDt").type(JsonFieldType.STRING).description("비행시작일시").optional(),
fieldWithPath("[].schFltEndDt").type(JsonFieldType.STRING).description("비행종료일시"), fieldWithPath("[].schFltEndDt").type(JsonFieldType.STRING).description("비행종료일시").optional(),
fieldWithPath("[].fltPurpose").type(JsonFieldType.STRING).description("비행목적"), fieldWithPath("[].fltPurpose").type(JsonFieldType.STRING).description("비행목적").optional(),
fieldWithPath("[].fltType").type(JsonFieldType.STRING).description("상업/비사업 구분"), fieldWithPath("[].fltType").type(JsonFieldType.STRING).description("상업/비사업 구분").optional(),
fieldWithPath("[].fltTypeNm").type(JsonFieldType.STRING).description("상업/비사업 구분 코드"), fieldWithPath("[].fltTypeNm").type(JsonFieldType.STRING).description("상업/비사업 구분 코드").optional(),
fieldWithPath("[].aprvlYn").type(JsonFieldType.STRING).description("승인여부"), fieldWithPath("[].aprvlYn").type(JsonFieldType.STRING).description("승인여부").optional(),
fieldWithPath("[].aprvlDt").type(JsonFieldType.STRING).description("승인일자"), fieldWithPath("[].aprvlDt").type(JsonFieldType.STRING).description("승인일자").optional(),
fieldWithPath("[].fileGroupNo").type(JsonFieldType.NUMBER).description("파일그룹번호"), fieldWithPath("[].fileGroupNo").type(JsonFieldType.NUMBER).description("파일그룹번호").optional(),
fieldWithPath("[].createUserId").type(JsonFieldType.STRING).description("등록자ID"), fieldWithPath("[].createUserId").type(JsonFieldType.STRING).description("등록자ID").optional(),
fieldWithPath("[].createDt").type(JsonFieldType.STRING).description("등록일시"), fieldWithPath("[].createDt").type(JsonFieldType.STRING).description("등록일시").optional(),
fieldWithPath("[].updateUserId").type(JsonFieldType.STRING).description("수정자ID"), fieldWithPath("[].updateUserId").type(JsonFieldType.STRING).description("수정자ID").optional(),
fieldWithPath("[].updateDt").type(JsonFieldType.STRING).description("수정일시"), fieldWithPath("[].updateDt").type(JsonFieldType.STRING).description("수정일시").optional(),
fieldWithPath("[].serviceType").type(JsonFieldType.STRING).description("각 항별 코드"), fieldWithPath("[].serviceType").type(JsonFieldType.STRING).description("각 항별 코드").optional(),
fieldWithPath("[].corpRegYn").type(JsonFieldType.STRING).description("기업여부"), fieldWithPath("[].corpRegYn").type(JsonFieldType.STRING).description("기업여부").optional(),
fieldWithPath("[].pdfUrl").type(JsonFieldType.STRING).description("공문URL"), fieldWithPath("[].pdfUrl").type(JsonFieldType.STRING).description("공문URL").optional(),
fieldWithPath("[].areaList").type(JsonFieldType.ARRAY).description("비행구역 리스트"), fieldWithPath("[].areaList").type(JsonFieldType.ARRAY).description("비행구역 리스트").optional(),
fieldWithPath("[].areaList[].planAreaSno").type(JsonFieldType.NUMBER).description("비행구역 일련번호"), fieldWithPath("[].areaList[].planAreaSno").type(JsonFieldType.NUMBER).description("비행구역 일련번호"),
fieldWithPath("[].areaList[].planSno").type(JsonFieldType.NUMBER).description("비행계획서 일련번호"), fieldWithPath("[].areaList[].planSno").type(JsonFieldType.NUMBER).description("비행계획서 일련번호"),
fieldWithPath("[].areaList[].areaType").type(JsonFieldType.STRING).description("비행구역 생성타입"), fieldWithPath("[].areaList[].areaType").type(JsonFieldType.STRING).description("비행구역 생성타입"),
@ -229,7 +226,7 @@ public class FlightLaancControllerTest extends BaseTest {
fieldWithPath("[].areaList[].bufferCoordList").type(JsonFieldType.ARRAY).description("비행 버퍼 좌표리스트").optional(), fieldWithPath("[].areaList[].bufferCoordList").type(JsonFieldType.ARRAY).description("비행 버퍼 좌표리스트").optional(),
fieldWithPath("[].areaList[].fltMothoeRm").type(JsonFieldType.STRING).description("비행방식(기타)"), fieldWithPath("[].areaList[].fltMothoeRm").type(JsonFieldType.STRING).description("비행방식(기타)"),
fieldWithPath("[].arcrftList").type(JsonFieldType.ARRAY).description("비행기체 리스트"), fieldWithPath("[].arcrftList").type(JsonFieldType.ARRAY).description("비행기체 리스트").optional(),
fieldWithPath("[].arcrftList[].planArcrftSno").type(JsonFieldType.NUMBER).description("계획서 기체 일련번호"), fieldWithPath("[].arcrftList[].planArcrftSno").type(JsonFieldType.NUMBER).description("계획서 기체 일련번호"),
fieldWithPath("[].arcrftList[].planSno").type(JsonFieldType.NUMBER).description("비행계획서 일련번호"), fieldWithPath("[].arcrftList[].planSno").type(JsonFieldType.NUMBER).description("비행계획서 일련번호"),
fieldWithPath("[].arcrftList[].arcrftSno").type(JsonFieldType.NUMBER).description("기체 일련번호").optional(), fieldWithPath("[].arcrftList[].arcrftSno").type(JsonFieldType.NUMBER).description("기체 일련번호").optional(),
@ -263,8 +260,8 @@ public class FlightLaancControllerTest extends BaseTest {
fieldWithPath("[].arcrftList[].arcrftWghtCd").type(JsonFieldType.STRING).description("자체중량코드"), fieldWithPath("[].arcrftList[].arcrftWghtCd").type(JsonFieldType.STRING).description("자체중량코드"),
fieldWithPath("[].pilotList").type(JsonFieldType.ARRAY).description("공문URL").optional(), fieldWithPath("[].pilotList").type(JsonFieldType.ARRAY).description("공문URL").optional(),
fieldWithPath("[].arcrftWght").type(JsonFieldType.STRING).description("기체 중량설명"), fieldWithPath("[].arcrftWght").type(JsonFieldType.STRING).description("기체 중량설명").optional(),
fieldWithPath("[].elev").type(JsonFieldType.STRING).description("비행고도") fieldWithPath("[].elev").type(JsonFieldType.STRING).description("비행고도").optional()
) )
) )
) )
@ -615,19 +612,9 @@ public class FlightLaancControllerTest extends BaseTest {
} }
private Long testCreatePlan(){ private FltPlanBasDTO testCreatePlan(){
String jsonRQ = "{\"cstmrSno\": 3,\"fltType\": \"COMMERCIAL\",\"schFltStDt\": \"2024-02-21T11:43:00\",\"schFltEndDt\": \"2024-02-22T15:46:00\",\"fltPurpose\": \"06\",\"serviceType\": \"KAC\",\"areaList\" : [{\"areaType\": \"LINE\",\"fltMethod\": \"02\",\"fltMothoeRm\": \"\",\"bufferZone\": \"100\",\"fltElev\": \"100\",\"coordList\": [{\"lat\": 37.51625845252909,\"lon\": 126.72340194011286},{\"lat\": 37.512215014051776,\"lon\": 126.72058946300956},{\"lat\": 37.51123897883966,\"lon\": 126.72463239884405}]}],\"arcrftList\" : [{\"idntfNum\": \"PA0001\",\"groupNm\": \"\",\"prdctNum\": \"\",\"arcrftTypeCd\": \"11\",\"arcrftModelNm\": \"\",\"prdctCmpnNm\": \"\",\"prdctDate\": \"\",\"arcrftLngth\": 0,\"arcrftWghtCd\": \"8\",\"arcrftHght\": 0,\"arcrftWght\": 0,\"wghtTypeCd\": \"\",\"imageUrl\": \"\",\"takeoffWght\": 0,\"useYn\": \"\",\"cameraYn\": \"\",\"insrncYn\": \"\",\"ownerNm\": \"\"}],\"terms\": []}".trim(); String jsonRQ = "{\"cstmrSno\": 3,\"fltType\": \"COMMERCIAL\",\"schFltStDt\": \"2024-02-21T11:43:00\",\"schFltEndDt\": \"2024-02-22T15:46:00\",\"fltPurpose\": \"06\",\"serviceType\": \"KAC\",\"areaList\" : [{\"areaType\": \"LINE\",\"fltMethod\": \"02\",\"fltMothoeRm\": \"\",\"bufferZone\": \"100\",\"fltElev\": \"100\",\"coordList\": [{\"lat\": 37.51625845252909,\"lon\": 126.72340194011286},{\"lat\": 37.512215014051776,\"lon\": 126.72058946300956},{\"lat\": 37.51123897883966,\"lon\": 126.72463239884405}]}],\"arcrftList\" : [{\"idntfNum\": \"PA0001\",\"groupNm\": \"\",\"prdctNum\": \"\",\"arcrftTypeCd\": \"11\",\"arcrftModelNm\": \"\",\"prdctCmpnNm\": \"\",\"prdctDate\": \"\",\"arcrftLngth\": 0,\"arcrftWghtCd\": \"8\",\"arcrftHght\": 0,\"arcrftWght\": 0,\"wghtTypeCd\": \"\",\"imageUrl\": \"\",\"takeoffWght\": 0,\"useYn\": \"\",\"cameraYn\": \"\",\"insrncYn\": \"\",\"ownerNm\": \"\"}],\"terms\": []}".trim();
this.getUserToken();
UserDetails userDetails = this.baseUserDetailsService.loadUserByUsername(this.CREATE_USERNAME);
UsernamePasswordAuthenticationToken userToken = new UsernamePasswordAuthenticationToken(
userDetails, null, userDetails.getAuthorities()
);
SecurityContextHolder.getContext().setAuthentication(userToken);
CreateLaancPlanRQ rq; CreateLaancPlanRQ rq;
try{ try{
rq = ObjectMapperUtils.getObjectMapper().readValue(jsonRQ, CreateLaancPlanRQ.class); rq = ObjectMapperUtils.getObjectMapper().readValue(jsonRQ, CreateLaancPlanRQ.class);

4
data/flt/src/main/java/kr/co/palnet/kac/data/flt/service/FltPlanDomainService.java

@ -33,11 +33,11 @@ public class FltPlanDomainService {
return fltPlanQueryRepository.findAllBySearch(memberName, createStDate, createEndDate); return fltPlanQueryRepository.findAllBySearch(memberName, createStDate, createEndDate);
} }
public Long findByOrderByPlanSnoDesc(){ public FltPlanBas findByOrderByPlanSnoDesc(){
Optional<FltPlanBas> fltPlanBasData = fltPlanBasRepository.findTopByOrderByPlanSnoDesc(); Optional<FltPlanBas> fltPlanBasData = fltPlanBasRepository.findTopByOrderByPlanSnoDesc();
return fltPlanBasData.map(FltPlanBas::getPlanSno).orElse(null); return fltPlanBasData.orElse(null);
} }
public Optional<List<FltPlanBasJoinAreaModel>> findAllFltPlanBasBySearch(String searchDate){ public Optional<List<FltPlanBasJoinAreaModel>> findAllFltPlanBasBySearch(String searchDate){

30
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/model/FltPlanBasDTO.java

@ -56,6 +56,36 @@ public class FltPlanBasDTO {
return dto; return dto;
} }
public static FltPlanBasDTO toFltPlanBasDto(FltPlanBas entity){
FltPlanBasDTO dto = new FltPlanBasDTO();
dto.setPlanSno(entity.getPlanSno());
dto.setGroupId(entity.getGroupId());
dto.setCstmrSno(entity.getCstmrSno());
dto.setServiceType(entity.getServiceType());
dto.setMemberName(entity.getMemberName());
dto.setEmail(entity.getEmail());
dto.setHpno(entity.getHpno());
dto.setClncd(entity.getClncd());
dto.setAddr(entity.getAddr());
dto.setAddrDtlCn(entity.getAddrDtlCn());
dto.setZip(entity.getZip());
dto.setSchFltStDt(entity.getSchFltStDt());
dto.setSchFltEndDt(entity.getSchFltEndDt());
dto.setFltPurpose(FltPurpose.fromCode(entity.getFltPurpose()));
dto.setFltType(FltType.fromCode(entity.getFltType()));
dto.setCorpRegYn(entity.getCorpRegYn());
dto.setAprvlYn(entity.getAprvlYn());
dto.setAprvlDt(entity.getAprvlDt());
dto.setDelYn(entity.getDelYn());
dto.setFileGroupNo(entity.getFileGroupNo());
dto.setCreateUserId(entity.getCreateUserId());
dto.setCreateDt(entity.getCreateDt());
dto.setUpdateUserId(entity.getUpdateUserId());
dto.setUpdateDt(entity.getUpdateDt());
return dto;
}
public static FltPlanBas toFltPlanEntity(FltPlanBasDTO dto){ public static FltPlanBas toFltPlanEntity(FltPlanBasDTO dto){
return FltPlanBas.builder() return FltPlanBas.builder()
.planSno(dto.getPlanSno()) .planSno(dto.getPlanSno())

4
web/api-flight/src/main/java/kr/co/palnet/kac/api/v1/flight/laanc/service/FlightLaancService.java

@ -645,7 +645,7 @@ public class FlightLaancService {
comConfirmDomainService.saveComConfirmBas(comConfirmBas); comConfirmDomainService.saveComConfirmBas(comConfirmBas);
} }
public Long testDescPlanSno(){ public FltPlanBasDTO testDescPlanSno(){
return fltPlanDomainService.findByOrderByPlanSnoDesc(); return FltPlanBasDTO.toFltPlanBasDto(fltPlanDomainService.findByOrderByPlanSnoDesc());
} }
} }

Loading…
Cancel
Save