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.assertNotNull;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.when;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.junit.Test;
import org.mockito.Matchers;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.runners.MockitoJUnitRunner;

import static org.junit.Assert.assertEquals;

import gov.va.med.ars.dao.ars.EntityNameRepository;
import gov.va.med.ars.dao.ars.EreposdataRepository;
import gov.va.med.ars.dao.ars.IArsReportTypeRepository;
import gov.va.med.ars.dao.ars.IReferenceIdentificationRepository;
import gov.va.med.ars.dao.ars.ITraceNumberRepository;
import gov.va.med.ars.dao.ars.ITransactionsRepository;
import gov.va.med.ars.dao.erepos.IRfaiEreposRepository;
import gov.va.med.ars.dao.fpps.IFppsClaimAttachmentsRepository;
import gov.va.med.ars.dao.fpps.IRfaiFppsClaimRepository;
import gov.va.med.ars.exceptions.EntityNotFoundException;
import gov.va.med.ars.exceptions.GenericException;
import gov.va.med.ars.exceptions.ValidationException;
import gov.va.med.ars.model.ClaimAttachmentsInformation;
import gov.va.med.ars.model.PatientIdProvNpi;
import gov.va.med.ars.model.Trn02AndMedRecNum;
import gov.va.med.ars.model.request.Unmatched837Request;
import gov.va.med.domain.ars.Arsreporttype;
import gov.va.med.domain.ars.TraceNumber;
import gov.va.med.domain.ars.Transactions;
import gov.va.med.domain.ereposModel.ClaimSuplInfo;
import gov.va.med.domain.fee.PersonInfo;
import gov.va.med.domain.fee.VaFacility;
import gov.va.med.domain.fee.Claim;
import gov.va.med.domain.fee.ClaimAttachments;
import gov.va.med.domain.fee.ClaimAttachmentsId;

import org.mockito.Mock;
import org.mockito.Mockito;
import org.junit.Test;

@RunWith(MockitoJUnitRunner.class)
public class Unmatched837AttachmentServiceImplTest {

@Mock
IRfaiEreposRepository ereposClaimRepository;

@Mock
EntityNameRepository arsEntityNameRepository;

@Mock
IArsReportTypeRepository arsReportTypeRepository;

@Mock
IReferenceIdentificationRepository arsRefIdRepository;

@Mock
EreposdataRepository arsEreposDataRepository;

@Mock
IRfaiFppsClaimRepository fppsClaimRepository;

@Mock
ITransactionsRepository arsTransactionsRepository;

@Mock
ITraceNumberRepository arsTraceNumberRepository;

@Mock
IFppsClaimAttachmentsRepository fppsClaimAttachmentsRepository;

@InjectMocks
Unmatched837AttachmentServiceImpl unmatched837ServiceImpl;

@Test
public void testMockIsWorking() {
assertNotNull("Unmatched837AttachmentServiceImplTest Injection Failed", unmatched837ServiceImpl);
}

@SuppressWarnings("unchecked")
@Test
public void TestMatchClaimAttachment() throws ValidationException, EntityNotFoundException, GenericException {

Unmatched837Request request = new Unmatched837Request();
request.setAttachmentId("86753098");
request.setAttachIdLx("86753098.001");
request.setUnmatched837Id("141801");

//String claimKey = "abcd1234";

List<gov.va.med.domain.ereposModel.Claim> ereposInfo = new ArrayList<>();
gov.va.med.domain.ereposModel.Claim eclaim = new gov.va.med.domain.ereposModel.Claim();
eclaim.setClm01ptAcctNbr("6789");
eclaim.setNm109billPrvdId("2222");
eclaim.setNm109billPrvdId("3333");
eclaim.setReceiverId("12115");
ereposInfo.add(eclaim);

List<ClaimSuplInfo> ereposClaimSup = new ArrayList<>();
ClaimSuplInfo claimSuplInfo = new ClaimSuplInfo();
claimSuplInfo.setPwk01rptTypeCd("3333");
claimSuplInfo.setPwk06atmntCtlNbr("4444");
ereposClaimSup.add(claimSuplInfo);

List<PatientIdProvNpi> arsPatientIdAndProviderNPI = new ArrayList<>();

List<String> patientIdsFromErepos = new ArrayList<>();
patientIdsFromErepos.add("1234");


TraceNumber traceNumber = new TraceNumber();
traceNumber.setAttachmentId(1234);
traceNumber.setTrn01("1");
traceNumber.setTrn02("4444");

Integer paCtrNum = 86753098;
String patientControlNumber = "6789";
String patientId = "1234";

String reportDescription = "A test description";

ClaimAttachmentsInformation result = new ClaimAttachmentsInformation();
result.setMedicalRecordNumber("1");
result.setReceiverId("2");
result.setReportCode("123");
result.setReportDescription("test description");
result.setTrn02FromTraceNumber("456");

List<Trn02AndMedRecNum> arsInfo = new ArrayList<>();
Trn02AndMedRecNumImpl trn02AndMedRecNumImpl = new Trn02AndMedRecNumImpl();
arsInfo.add(trn02AndMedRecNumImpl);

Arsreporttype arsReportType = new Arsreporttype();
arsReportType.setCode(ereposClaimSup.get(0).getPwk01rptTypeCd());
arsReportType.setDefinition("definition");

Claim fppsClaim = new Claim();
fppsClaim.setEdiClaimKey("adcd1234");
Set<PersonInfo> personInfos = new HashSet<>();
PersonInfo personInfo = new PersonInfo();
personInfo.setBirthDate(new Date());
fppsClaim.setPersonInfos(personInfos );

VaFacility vaFacility = new VaFacility();
vaFacility.setVaFacilityCd("facility cd");
fppsClaim.setVaFacility(vaFacility );

ClaimAttachmentsId id = new ClaimAttachmentsId();
id.setAttachmentId(new BigDecimal(request.getAttachIdLx()));
id.setEdiClaimKey(fppsClaim.getEdiClaimKey());
id.setReportTypeCd(result.getReportCode());
id.setReportTypeDesc(result.getReportDescription());

Transactions transaction = new Transactions();

when(ereposClaimRepository.getEreposClaimRows((fppsClaim.getEdiClaimKey()))).thenReturn(ereposInfo);
when(ereposClaimRepository.getEreposClaimSup(eclaim)).thenReturn(ereposClaimSup);
when(arsReportTypeRepository.findByCodeIgnoreCase(ereposClaimSup.get(0).getPwk01rptTypeCd())).thenReturn(arsReportType);
when(arsEntityNameRepository.getPatientIdProviderNpi(request.getAttachmentId())).thenReturn(arsPatientIdAndProviderNPI);

when(arsRefIdRepository.getPatientCtrlNoByAttachId(paCtrNum)).thenReturn(patientControlNumber);
when(arsEntityNameRepository.getPatientId(request.getAttachmentId())).thenReturn(patientId);

when(ereposClaimRepository.getPatientIdsFromErepos(fppsClaim.getEdiClaimKey())).thenReturn(patientIdsFromErepos);
when(arsEreposDataRepository.findArsRefInfoByAttachmentId(Integer.parseInt(request.getAttachmentId()))).thenReturn(arsInfo);
when(fppsClaimRepository.getClaimWithVaFacilityAndPersonInfo(BigInteger.valueOf(141801))).thenReturn(fppsClaim);
when(arsTraceNumberRepository.findByAttachmentIdLx(request.getAttachIdLx())).thenReturn(traceNumber);
when(arsRefIdRepository.getPatientCtrlNoByAttachId(86753513)).thenReturn(patientControlNumber);
when(arsTransactionsRepository.findByattachmentIdLx(request.getAttachIdLx())).thenReturn(transaction);
when(fppsClaimAttachmentsRepository.save(Matchers.any(Iterable.class))).thenReturn(null);
when(arsTransactionsRepository.save(Matchers.any(Iterable.class))).thenReturn(null);

boolean finalResult = unmatched837ServiceImpl.matchClaimAttachment(request);

assertEquals(finalResult, true);
}

class Trn02AndMedRecNumImpl implements Trn02AndMedRecNum {
@Override
public String getTrn02() {
return "1234";
}

@Override
public String getMedicalrecordnumber() {
return "5678";
}
}
}