Summary Table
Categories |
Total Count |
PII |
0 |
URL |
0 |
DNS |
0 |
EKL |
0 |
IP |
0 |
PORT |
0 |
VsID |
0 |
CF |
0 |
AI |
0 |
VPD |
0 |
PL |
0 |
Other |
0 |
File Content
package gov.va.med.ars.controller;
import static org.hamcrest.Matchers.is;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyList;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.SerializationFeature;
import gov.va.med.ars.constants.ErrorMessages;
import gov.va.med.ars.exceptions.GenericException;
import gov.va.med.ars.model.request.CodeAndModifierRequest;
import gov.va.med.ars.model.request.GenericRequest;
import gov.va.med.ars.model.request.JsonArrayModel;
import gov.va.med.ars.service.ICodeAndModifierService;
import gov.va.med.domain.ars.HccsCd;
import gov.va.med.domain.ars.LoincCd;
import gov.va.med.domain.ars.LoincModCd;
@RunWith(MockitoJUnitRunner.class)
public class CodeAndModifiersControllerTest {
DateFormat dateFormat = new SimpleDateFormat("MM/DD/YYYY");
private MockMvc mockMvc;
public static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(),
MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));
@Mock
ICodeAndModifierService codeAndModService;
@InjectMocks
private CodeAndModifiersController codesAndModsController;
@Before
public void init() throws Exception {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(codesAndModsController).build();
}
@SuppressWarnings("unchecked")
@Test
public void test_getCodes() throws Exception {
// arrange (request)
HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getRequestURI()).thenReturn("/api/v1/populate/loinc");
List<String> codesToProcess = new ArrayList<>();
codesToProcess.add("Y");
JsonArrayModel acceptedValues = new JsonArrayModel(codesToProcess);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestBodyJson = ow.writeValueAsString(acceptedValues/*.getAcceptedValues()*/);
// arrange (response)
List<LoincCd> loincCodes = new ArrayList<>();
LoincCd lcd1 = new LoincCd();
lcd1.setLoincId(1l);
lcd1.setStcloincCd("999");
lcd1.setStcloincCdDesc("test loinc 1 description");
loincCodes.add(lcd1);
when(codeAndModService.getCodeAndModifier(any(String.class), anyList())).thenReturn(loincCodes);
mockMvc.perform(post("/api/v1/populate/loinc").contentType(MediaType.APPLICATION_JSON).content(requestBodyJson))
.andDo(print()).andExpect(status().isOk()).andExpect(jsonPath("$.[0].loincId", is(1)))
.andExpect(jsonPath("$.[0].stcloincCd", is("999")))
.andExpect(jsonPath("$.[0].stcloincCdDesc", is("test loinc 1 description")));
}
@SuppressWarnings("unchecked")
@Test
public void test_getCodes_fail() throws Exception {
// arrange (service)
GenericException genericException = new GenericException(ErrorMessages.INVALID_REQUEST, "error",
HttpStatus.NOT_FOUND);
when(codeAndModService.getCodeAndModifier(any(String.class), anyList())).thenThrow(genericException);
// arrange (controller)
HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getRequestURI()).thenReturn("/api/v1/populate/loinc");
List<String> codesToProcess = new ArrayList<>();
codesToProcess.add("Y");
JsonArrayModel acceptedValues = new JsonArrayModel(codesToProcess);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestBodyJson = ow.writeValueAsString(acceptedValues.getAcceptedValues());
// act & assert
mockMvc.perform(post("/api/v1/populate/loinc").contentType(MediaType.APPLICATION_JSON).content(requestBodyJson))
.andDo(print()).andExpect(status().is(400));
}
@Test
public void test_addOrModifyCodes() throws Exception {
// arrange (request)
HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getRequestURI()).thenReturn("/api/v1/populate/add");
List<CodeAndModifierRequest> hccList = new ArrayList<>();
CodeAndModifierRequest codeAndModReq = new CodeAndModifierRequest();
codeAndModReq.setCd(1l);
codeAndModReq.setFlag(true);
codeAndModReq.setStcCd("hccs_1");
codeAndModReq.setStcCdDesc("hccs_1_desc");
hccList.add(codeAndModReq);
GenericRequest requestBody = new GenericRequest();
requestBody.setHccList(hccList);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestBodyJson = ow.writeValueAsString(requestBody);
// arrange (response)
List<String> dupCheck = new ArrayList<>();
when(codeAndModService.checkSubmittedModificationsForDupes(any(GenericRequest.class))).thenReturn(dupCheck);
when(codeAndModService.addOrModifyCodeAndModifier(any(GenericRequest.class))).thenReturn(true);
mockMvc.perform(post("/api/v1/populate/add").contentType(MediaType.APPLICATION_JSON).content(requestBodyJson))
.andDo(print()).andExpect(status().isOk()).andExpect(jsonPath("$.result", is(true)));
}
@Test
public void test_archiveCode() throws Exception
{
HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getRequestURI()).thenReturn("/api/v1/populate/archive");
CodeAndModifierRequest loinc = new CodeAndModifierRequest();
loinc.setCd(130l);
loinc.setStcCd("2018");
loinc.setStcCdDesc("aaa");
loinc.setFlag(false);
loinc.setStartDate("04/17/2018");
loinc.setEndDate("04/17/2018");
loinc.setLevel("claim");
loinc.setArchive(true);
List<CodeAndModifierRequest> loincList = new ArrayList<>();
loincList.add(loinc);
LoincCd loinc1 = new LoincCd();
loinc1.setLoincId(loinc.getCd());
loinc1.setIsactive('N');
loinc1.setStcloincCd(loinc.getStcCd());
loinc1.setStcloincCdDesc(loinc.getStcCdDesc());
loinc1.setDatecreated(dateFormat.parse("04/17/2018"));
loinc1.setDatemodified(dateFormat.parse(loinc.getEndDate()));
loinc1.setIsarchive('Y');
CodeAndModifierRequest loincMod = new CodeAndModifierRequest();
loincMod.setCd(1000l);
loincMod.setStcCd("2018");
loincMod.setStcCdDesc("aaa");
loincMod.setFlag(false);
loincMod.setStartDate("04/17/2018");
loincMod.setEndDate("04/17/2018");
loincMod.setLevel("line");
loincMod.setArchive(true);
List<CodeAndModifierRequest> loincModList = new ArrayList<>();
loincModList.add(loincMod);
LoincModCd loincModCd = new LoincModCd();
loincModCd.setLoincModId(loincMod.getCd());
loincModCd.setIsactive('N');
loincModCd.setStcloincCdMod(loincMod.getStcCd());
loincModCd.setStcloincCdModDesc(loincMod.getStcCdDesc());
loincModCd.setDatecreated(dateFormat.parse("04/17/2018"));
loincModCd.setDatemodified(dateFormat.parse(loincMod.getEndDate()));
loincModCd.setIsarchive('Y');
CodeAndModifierRequest hccsCd = new CodeAndModifierRequest();
hccsCd.setCd(1000l);
hccsCd.setStcCd("2018");
hccsCd.setStcCdDesc("aaa");
hccsCd.setFlag(false);
hccsCd.setStartDate("04/17/2018");
hccsCd.setEndDate("04/17/2018");
hccsCd.setLevel("claim");
hccsCd.setArchive(true);
List<CodeAndModifierRequest> hccList = new ArrayList<>();
hccList.add(hccsCd);
HccsCd hccs = new HccsCd();
hccs.setHccsId(hccsCd.getCd());
hccs.setIsactive('N');
hccs.setStchccstatuscatCd(hccsCd.getStcCd());
hccs.setStchccstatuscatCdDesc(hccsCd.getStcCdDesc());
hccs.setDatecreated(dateFormat.parse("04/17/2018"));
hccs.setDatemodified(dateFormat.parse(hccsCd.getEndDate()));
hccs.setIsarchive('Y');
GenericRequest codeAndModifierRequest = new GenericRequest();
codeAndModifierRequest.setHccList(hccList);
codeAndModifierRequest.setLoincList(loincList);
codeAndModifierRequest.setLoincModList(loincModList);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestBodyJson = ow.writeValueAsString(codeAndModifierRequest);
mockMvc.perform(post("/api/v1/populate/archive").contentType(MediaType.APPLICATION_JSON).content(requestBodyJson))
.andDo(print()).andExpect(status().isOk());
}
}