use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.
the class ContractProcessorUnitTest method whenExpectedPatientsNotMatchActualPatientsFail.
@Test
@DisplayName("When a job is cancelled while it is being processed, then attempt to stop the job gracefully without completing it")
void whenExpectedPatientsNotMatchActualPatientsFail() {
when(coverageDriver.pageCoverage(any(CoveragePagingRequest.class))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 1), null));
when(coverageDriver.numberOfBeneficiariesToProcess(any(Job.class), any(ContractDTO.class))).thenReturn(3);
ContractProcessingException exception = assertThrows(ContractProcessingException.class, () -> cut.process(job));
assertTrue(exception.getMessage().contains("from database but retrieved"));
}
use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.
the class ContractProcessorUnitTest method whenManyPatientIdsAreProcessed_shouldUpdatePercentageCompletedMultipleTimes.
@Test
@DisplayName("When many patientId are present, 'PercentageCompleted' should be updated many times")
void whenManyPatientIdsAreProcessed_shouldUpdatePercentageCompletedMultipleTimes() {
when(coverageDriver.numberOfBeneficiariesToProcess(any(Job.class), any(ContractDTO.class))).thenReturn(18);
when(coverageDriver.pageCoverage(any(CoveragePagingRequest.class))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), null));
jobChannelService.sendUpdate(jobUuid, JobMeasure.PATIENTS_EXPECTED, 18);
jobChannelService.sendUpdate(jobUuid, JobMeasure.FAILURE_THRESHHOLD, 10);
var jobOutputs = cut.process(job);
assertEquals(6, jobRepository.getUpdatePercentageCompletedCount());
verify(patientClaimsProcessor, atLeast(1)).process(any());
}
use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.
the class JobPreProcessorIntegrationTest method whenJobIsInSubmittedStatus_ThenJobShouldBePutInProgress.
@Test
@DisplayName("When a job is in submitted status, it can be put into progress upon starting processing")
void whenJobIsInSubmittedStatus_ThenJobShouldBePutInProgress() throws InterruptedException {
when(coverageDriver.isCoverageAvailable(any(Job.class), any(ContractDTO.class))).thenReturn(true);
var processedJob = cut.preprocess(job.getJobUuid());
assertEquals(JobStatus.IN_PROGRESS, processedJob.getStatus());
List<LoggableEvent> jobStatusChange = loggerEventRepository.load(JobStatusChangeEvent.class);
assertEquals(1, jobStatusChange.size());
JobStatusChangeEvent event = (JobStatusChangeEvent) jobStatusChange.get(0);
assertEquals("SUBMITTED", event.getOldStatus());
assertEquals("IN_PROGRESS", event.getNewStatus());
assertTrue(UtilMethods.allEmpty(loggerEventRepository.load(ApiRequestEvent.class), loggerEventRepository.load(ApiResponseEvent.class), loggerEventRepository.load(ReloadEvent.class), loggerEventRepository.load(ContractSearchEvent.class), loggerEventRepository.load(ErrorEvent.class), loggerEventRepository.load(FileEvent.class)));
loggerEventRepository.delete();
}
use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.
the class JobPreProcessorIntegrationTest method createJob.
private Job createJob(PdpClient pdpClient, String contractNumber) {
Job job = new Job();
job.setJobUuid("S0000");
job.setStatus(JobStatus.SUBMITTED);
job.setStatusMessage("0%");
job.setOrganization(pdpClient.getOrganization());
job.setOutputFormat(NDJSON_FIRE_CONTENT_TYPE);
job.setCreatedAt(OffsetDateTime.now());
job.setFhirVersion(STU3);
job.setContractNumber(contractNumber);
job = jobRepository.save(job);
dataSetup.queueForCleanup(job);
return job;
}
use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.
the class JobPreProcessorIntegrationTest method testDefaultSinceAB2DRun.
@Test
@DisplayName("We're R4, there has been a successful job run but it was run by the developers so don't set default since")
void testDefaultSinceAB2DRun() {
Job oldJob = new Job();
oldJob.setJobUuid("AA-BB");
oldJob.setStatus(JobStatus.SUCCESSFUL);
oldJob.setStatusMessage("100%");
oldJob.setOrganization(pdpClient.getOrganization());
oldJob.setStartedBy(DEVELOPER);
oldJob.setOutputFormat(NDJSON_FIRE_CONTENT_TYPE);
OffsetDateTime oldJobTime = OffsetDateTime.parse("2021-01-01T00:00:00.000-05:00", DateTimeFormatter.ISO_DATE_TIME);
oldJob.setCreatedAt(oldJobTime);
oldJob.setFhirVersion(STU3);
oldJob.setContractNumber(contract.getContractNumber());
oldJob = jobRepository.save(oldJob);
Job newJob = new Job();
newJob.setJobUuid("YY-ZZ");
newJob.setStatus(JobStatus.SUBMITTED);
newJob.setStatusMessage("0%");
newJob.setOrganization(pdpClient.getOrganization());
newJob.setOutputFormat(NDJSON_FIRE_CONTENT_TYPE);
newJob.setCreatedAt(OffsetDateTime.now());
newJob.setFhirVersion(R4);
newJob.setContractNumber(contract.getContractNumber());
newJob = jobRepository.save(newJob);
Job processedJob = cut.preprocess(newJob.getJobUuid());
assertNull(processedJob.getSince());
assertEquals(FIRST_RUN, processedJob.getSinceSource());
dataSetup.queueForCleanup(oldJob);
dataSetup.queueForCleanup(newJob);
}
Aggregations