Ejemplo n.º 1
0
        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>());
        }
Ejemplo n.º 2
0
        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);
        }