Summary Table
Categories |
Total Count |
PII |
2 |
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.junit.Assert.assertEquals;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
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.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.SerializationFeature;
import gov.va.med.ars.exceptions.GenericException;
import gov.va.med.ars.filter.CORSFilter;
import gov.va.med.ars.model.response.CodeAndLevel;
import gov.va.med.ars.model.response.RfaiLineItemResponse;
import gov.va.med.ars.model.response.RfaiResponse;
import gov.va.med.ars.service.IRfaiRequestSubmitService;
@RunWith(MockitoJUnitRunner.class)
public class RfaiRequestSubmitControllerTest {
private MockMvc mockMvc;
public static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(),
MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));
@Mock
private IRfaiRequestSubmitService reqSubmitService;
@InjectMocks
private RfaiRequestSubmitController reqSubmitController;
@Before
public void init() throws Exception {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(reqSubmitController).addFilters(new CORSFilter()).build();
}
@Test
public void testSubmitRfaiRequest_Success() throws Exception {
RfaiResponse rfaiRequest = new RfaiResponse();
rfaiRequest.setClaimId(new BigInteger("10000"));
rfaiRequest.setContactInformation("
PII
");
rfaiRequest.setServiceFromDate("12/12/2017");
rfaiRequest.setServiceToDate("12/12/2017");
rfaiRequest.setResponseDate("12/12/2017");
Set<CodeAndLevel> calList = new HashSet<>();
CodeAndLevel cal1 = new CodeAndLevel(1L, 1L, 1L, 1L, "0");
CodeAndLevel cal2 = new CodeAndLevel(2L, 2L, 2L, 2L, "0");
calList.add(cal1);
calList.add(cal2);
rfaiRequest.setCodeAndLevelList(calList);
List<RfaiLineItemResponse> rfaiLineItemResponse = new ArrayList<RfaiLineItemResponse>();
RfaiLineItemResponse rfaiLine = new RfaiLineItemResponse();
rfaiLine.setServiceLineId(10095L);
rfaiLine.setChargeAmount(new BigDecimal(2.01));
rfaiLine.setModifiers("modifier");
rfaiLine.setProcedureCode("256");
rfaiLine.setRevenueCode("456");
rfaiLine.setServiceFrom("12/12/2017");
rfaiLine.setServiceTo("12/12/2017");
rfaiLine.setServiceLineId(1000089L);
rfaiLineItemResponse.add(rfaiLine);
rfaiRequest.setRfaiLineItemResponse(rfaiLineItemResponse);
when(reqSubmitService.submitAdditionalInfoRequest(Mockito.any(RfaiResponse.class))).thenReturn(true);
mockMvc.perform(post("/api/v1/additionalInfoRequest").contentType(MediaType.APPLICATION_JSON)
.content(getRequestJson(rfaiRequest))).andDo(print()).andExpect(status().isCreated());
verify(reqSubmitService, times(1)).submitAdditionalInfoRequest(Mockito.any(RfaiResponse.class));
verifyNoMoreInteractions(reqSubmitService);
}
@Test
public void testSubmitRfaiRequest_Failure() throws GenericException {
RfaiResponse rfaiRequest = new RfaiResponse();
rfaiRequest.setContactInformation("
PII
");
rfaiRequest.setServiceFromDate("12/12/2017");
rfaiRequest.setServiceToDate("12/12/2017");
rfaiRequest.setResponseDate("12/12/2017");
Set<CodeAndLevel> calList = new HashSet<>();
CodeAndLevel cal1 = new CodeAndLevel(1L, 1L, 1L, 1L, "0");
CodeAndLevel cal2 = new CodeAndLevel(2L, 2L, 2L, 2L, "0");
calList.add(cal1);
calList.add(cal2);
rfaiRequest.setCodeAndLevelList(calList);
List<RfaiLineItemResponse> rfaiLineItemResponse = new ArrayList<RfaiLineItemResponse>();
RfaiLineItemResponse rfaiLine = new RfaiLineItemResponse();
rfaiLine.setServiceLineId(10095L);
rfaiLine.setChargeAmount(new BigDecimal(2.01));
rfaiLine.setModifiers("modifier");
rfaiLine.setProcedureCode("256");
rfaiLine.setRevenueCode("456");
rfaiLine.setServiceFrom("12/12/2017");
rfaiLine.setServiceTo("12/12/2017");
rfaiLine.setServiceLineId(1000089L);
rfaiLineItemResponse.add(rfaiLine);
rfaiRequest.setRfaiLineItemResponse(rfaiLineItemResponse);
try {
mockMvc.perform(post("/api/v1/additionalInfoRequest").contentType(MediaType.APPLICATION_JSON)
.content(getRequestJson(rfaiRequest))).andDo(print()).andExpect(status().isBadRequest())
.andExpect(content().contentType("application/json;charset=UTF-8"));
} catch (Exception e) {
assertEquals(
"Request processing failed; nested exception is gov.va.med.ars.exceptions.GenericException: Missing ClaimId",
e.getMessage());
}
}
private String getRequestJson(Object request) {
String requestJson = null;
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
requestJson = ow.writeValueAsString(request);
System.out.println("requestJson - " + requestJson);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return requestJson;
}
}