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.service.impl;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;

import gov.va.med.ars.dao.ars.IReportsViewRepository;
import gov.va.med.ars.exceptions.GenericException;
import gov.va.med.ars.model.request.SearchReportRequest;
import gov.va.med.ars.model.response.GenericResponse;
import gov.va.med.ars.model.response.ReportResponse;
import gov.va.med.domain.ars.ReportsView;

@RunWith(MockitoJUnitRunner.class)
public class ReportServiceImplTest {

@Mock
private IReportsViewRepository reportsViewsRepository;

@InjectMocks
private ReportServiceImpl reportsService;

@Test
public void testMockIsWorking() {
assertNotNull("ReportServiceImpl Injection Failed", reportsService);
}

@SuppressWarnings("unchecked")
@Test
public void getReports_getMatchedReport_Success() throws GenericException {

// arrange
SearchReportRequest searchRequest = new SearchReportRequest();
searchRequest.setPageNumber(1);
searchRequest.setPageSize(10);
searchRequest.setDescending(false);
searchRequest.setSortColumn("attachmentId");
searchRequest.setStartDate("03/16/2018");
searchRequest.setEndDate("03/16/2018");
searchRequest.setPayerId("121150001");
searchRequest.setTypeOfReport("unmatched");
searchRequest.setTypeOf275("unsolicited");
searchRequest.setReceivedDateRequested(false);

List<ReportsView> reportsList = new ArrayList<>();
ReportsView report1 = new ReportsView();
report1.setAttachmentId(999l);
report1.setPatientFirstName("firstName");
report1.setPatientLastName("lastName");
reportsList.add(report1);

Page<ReportsView> pagedReports = new PageImpl<>(reportsList);

when(reportsViewsRepository.count(any(Specification.class))).thenReturn(1l);
when(reportsViewsRepository.findAll(any(Specification.class), any(PageRequest.class))).thenReturn(pagedReports);

// act
GenericResponse repoResponse = reportsService.getReports(searchRequest);

// assert
verify(reportsViewsRepository, times(1)).count(any(Specification.class));
verify(reportsViewsRepository, times(1)).findAll(any(Specification.class), any(PageRequest.class));

List<ReportResponse> repoResponseList = (List<ReportResponse>) repoResponse.getResponse();
assertEquals(10, repoResponse.getpageSize());
assertEquals(1L, repoResponse.gettotalNumberOfResults());
assertEquals(10, repoResponse.getpageSize());
assertEquals(999, repoResponseList.get(0).getAttachmentId());
assertEquals("firstName", repoResponseList.get(0).getPatientFirstName());
assertEquals("lastName", repoResponseList.get(0).getPatientLastName());

}

@SuppressWarnings("unchecked")
@Test
public void getReports_getMatchedReport_Success_CountZero() {

// arrange
SearchReportRequest searchRequest = new SearchReportRequest();
searchRequest.setPageNumber(1);
searchRequest.setPageSize(10);
searchRequest.setDescending(false);
searchRequest.setSortColumn("attachmentId");
searchRequest.setStartDate("wrongStartDate");
searchRequest.setEndDate("wrongEndDate");
searchRequest.setPayerId("121150001");
searchRequest.setTypeOf275("unsolicited");
searchRequest.setTypeOfReport("unmatched");
searchRequest.setReceivedDateRequested(false);

when(reportsViewsRepository.count(any(Specification.class))).thenReturn(0l);

// act
try {
reportsService.getReports(searchRequest);
} catch (GenericException e) {
e.printStackTrace();
}

// assert
verify(reportsViewsRepository, never()).findAll(any(Specification.class), any(PageRequest.class));
}

@SuppressWarnings("unchecked")
@Test
public void getReports_getMatchedReport_Failure() {

// arrange
SearchReportRequest searchRequest = new SearchReportRequest();
searchRequest.setPageNumber(1);
searchRequest.setPageSize(10);
searchRequest.setDescending(false);
searchRequest.setSortColumn("attachmentId");

try {
// act
reportsService.getReports(searchRequest);
} catch (GenericException ge) {
// assert
assertEquals("All required fields must be populated.", ge.getErrorDescription());
}

// assert
verify(reportsViewsRepository, never()).findAll(any(Specification.class), any(PageRequest.class));
}

}