public async Task GivenARequest_WhenValidatingThatType_ThenAllValidationRulesShouldRun() { var mockValidator1 = Substitute.For <AbstractValidator <UpsertResourceRequest> >(); var mockValidator2 = Substitute.For <AbstractValidator <UpsertResourceRequest> >(); var validators = new[] { mockValidator1, mockValidator2 }; var upsertValidationHandler = new ValidateRequestPreProcessor <UpsertResourceRequest>(validators); var upsertResourceRequest = new UpsertResourceRequest(Samples.GetDefaultObservation()); await upsertValidationHandler.Process(upsertResourceRequest, CancellationToken.None); await mockValidator1.Received().ValidateAsync(Arg.Any <ValidationContext <UpsertResourceRequest> >(), Arg.Any <CancellationToken>()); await mockValidator2.Received().ValidateAsync(Arg.Any <ValidationContext <UpsertResourceRequest> >(), Arg.Any <CancellationToken>()); }
public async Task GivenARequest_WhenValidatingThatTypeWithFailingRule_ThenAValidationExceptionShouldBeThrown() { var mockValidator1 = Substitute.For <AbstractValidator <UpsertResourceRequest> >(); var mockValidator2 = Substitute.For <AbstractValidator <UpsertResourceRequest> >(); var validators = new[] { mockValidator1, mockValidator2 }; var upsertValidationHandler = new ValidateRequestPreProcessor <UpsertResourceRequest>(validators); var upsertResourceRequest = new UpsertResourceRequest(Samples.GetDefaultObservation()); var validationError = Task.FromResult(new ValidationResult(new[] { new ValidationFailure("Id", "Id should not be null") })); mockValidator2 .ValidateAsync(Arg.Any <ValidationContext <UpsertResourceRequest> >(), Arg.Any <CancellationToken>()) .Returns(validationError); await Assert.ThrowsAsync <ResourceNotValidException>(async() => await upsertValidationHandler.Process(upsertResourceRequest, CancellationToken.None)); }
public async Task GivenARequest_WhenReturningFhirValidationFailure_ThenOperationOutcomeIsUsedCorrectly() { var mockValidator = Substitute.For <AbstractValidator <UpsertResourceRequest> >(); var validators = new[] { mockValidator }; var upsertValidationHandler = new ValidateRequestPreProcessor <UpsertResourceRequest>(validators); var upsertResourceRequest = new UpsertResourceRequest(Samples.GetDefaultObservation()); var operationOutcomeIssue = new OperationOutcomeIssue(OperationOutcomeConstants.IssueSeverity.Error, OperationOutcomeConstants.IssueType.Invalid, "Id was Invalid"); var validationError = Task.FromResult(new ValidationResult(new[] { new FhirValidationFailure("Id", operationOutcomeIssue.Diagnostics, operationOutcomeIssue) })); mockValidator .ValidateAsync(Arg.Any <ValidationContext <UpsertResourceRequest> >(), Arg.Any <CancellationToken>()) .Returns(validationError); var exception = await Assert.ThrowsAsync <ResourceNotValidException>(async() => await upsertValidationHandler.Process(upsertResourceRequest, CancellationToken.None)); Assert.Contains(operationOutcomeIssue, exception.Issues); }