public async Task <GetExportResponse> Handle(GetExportRequest request, CancellationToken cancellationToken) { EnsureArg.IsNotNull(request, nameof(request)); ExportJobOutcome outcome = await _fhirDataStore.GetExportJobAsync(request.JobId, cancellationToken); // We have an existing job. We will determine the response based on the status of the export operation. GetExportResponse exportResponse; if (outcome.JobRecord.Status == OperationStatus.Completed) { var jobResult = new ExportJobResult( outcome.JobRecord.QueuedTime, outcome.JobRecord.RequestUri, requiresAccessToken: false, outcome.JobRecord.Output, outcome.JobRecord.Errors); exportResponse = new GetExportResponse(HttpStatusCode.OK, jobResult); } else { exportResponse = new GetExportResponse(HttpStatusCode.Accepted); } return(exportResponse); }
public async void GivenAFhirMediator_WhenGettingAnExistingExportJobWithCompletedStatus_ThenHttpResponseCodeShouldBeOk() { var jobRecord = new ExportJobRecord(new Uri(CreateRequestUrl)); jobRecord.Status = OperationStatus.Completed; var jobOutcome = new ExportJobOutcome(jobRecord, WeakETag.FromVersionId("eTag")); _fhirDataStore.GetExportJobAsync(jobRecord.Id, Arg.Any <CancellationToken>()).Returns(jobOutcome); var result = await _mediator.GetExportStatusAsync(new Uri(CreateRequestUrl), jobRecord.Id); Assert.Equal(HttpStatusCode.OK, result.StatusCode); Assert.NotNull(result.JobResult); // Check whether required fields are present. Assert.NotNull(result.JobResult.Output); Assert.NotEqual(default(DateTimeOffset), result.JobResult.TransactionTime); Assert.NotNull(result.JobResult.RequestUri); }