コード例 #1
0
        public async Task UpdateFundingStructureLastModifiedGuardsAgainstInValidRequests()
        {
            UpdateFundingStructureLastModifiedRequest request = NewUpdateFundingStructureLastModifiedRequest();
            ValidationFailure failureOne       = NewValidationFailure();
            ValidationFailure failureTwo       = NewValidationFailure();
            ValidationResult  validationResult = NewValidationResult(_ => _.WithValidationFailures(failureOne, failureTwo));

            GivenTheValidationResult(request, validationResult);

            BadRequestObjectResult actionResult = await WhenTheFundingStructureLastModifiedIsUpdated(request) as BadRequestObjectResult;

            SerializableError serializableError = actionResult?.Value as SerializableError;

            serializableError
            .Should()
            .NotBeNull();

            serializableError[failureOne.PropertyName]
            .Should()
            .BeEquivalentTo(new[] { failureOne.ErrorMessage });

            serializableError[failureTwo.PropertyName]
            .Should()
            .BeEquivalentTo(new[] { failureTwo.ErrorMessage });

            await AndTheCacheWasNotUpdated();
        }
コード例 #2
0
        public async Task SaveDefinitionExitsEarlyIfValidationFails()
        {
            JobDefinition jobDefinition = NewJobDefinition();

            string invalidProperty          = NewRandomString();
            string validationFailureMessage = NewRandomString();

            GivenTheJobsRepositoryReturnsTheStatusCode(jobDefinition, HttpStatusCode.OK);
            GivenTheJobDefinitionValidationResult(jobDefinition, NewValidationResult(_ =>
                                                                                     _.WithValidationFailures(NewValidationFailure(vf =>
                                                                                                                                   vf.WithPropertyName(invalidProperty)
                                                                                                                                   .WithErrorMessage(validationFailureMessage)))));

            BadRequestObjectResult actionResult      = (await WhenTheJobDefinitionIsSaved(jobDefinition)) as BadRequestObjectResult;
            SerializableError      serializableError = actionResult?.Value as SerializableError;

            serializableError
            .Should()
            .NotBeNull();

            serializableError[invalidProperty]
            .Should()
            .BeEquivalentTo(new [] { validationFailureMessage });


            ThenNoJobDefinitionsWereSaved();
            AndTheCacheWasNotInvalidated();
        }
コード例 #3
0
        public async Task Returns400IfPrereqChecksFailsForGetRefreshFundingJobPrereqErrors()
        {
            string errorMessage = "calc error";

            ApiSpecificationSummary specificationSummary = NewApiSpecificationSummary(_ => _.WithId(SpecificationId));

            GivenTheApiResponseDetailsForTheSuppliedId(specificationSummary);

            AndGetPreReqCheckerLocatorReturnsRefreshPreReqChecker();
            AndPrereqChecksFails(specificationSummary, errors: new[] { errorMessage });

            await WhenGetRefreshFundingJobPrereqErrors();

            ThenTheResponseShouldBe <BadRequestObjectResult>();

            BadRequestObjectResult objectResult = ActionResult as BadRequestObjectResult;

            objectResult.Should().NotBeNull();
            objectResult.Value.Should().BeOfType <SerializableError>();

            SerializableError errors = objectResult.Value as SerializableError;

            errors.Should().NotBeNull();
            errors.Count.Should().Be(1);

            errors.FirstOrDefault().Value.Should().BeOfType <string[]>();

            string[] errorArray = errors.FirstOrDefault().Value as string[];

            errorArray.Should().NotBeNull();
            errorArray.Length.Should().Be(1);

            errorArray.FirstOrDefault().Should().Be(errorMessage);
        }
        public async Task SaveFundingTemplate_GivenTemplateButDidNotValidate_ReturnsBadRequest()
        {
            //Arrange
            const string template        = "a template";
            string       fundingStreamId = NewRandomString();
            string       templateVersion = NewRandomString();
            string       fundingPeriodId = NewRandomString();

            FundingTemplateValidationResult validationResult = new FundingTemplateValidationResult();

            validationResult.Errors.Add(new ValidationFailure("prop1", "an error"));
            validationResult.Errors.Add(new ValidationFailure("prop2", "another error"));

            IFundingTemplateValidationService fundingTemplateValidationService = CreateFundingTemplateValidationService();

            fundingTemplateValidationService
            .ValidateFundingTemplate(Arg.Is(template), Arg.Is(fundingStreamId), Arg.Is(fundingPeriodId), Arg.Is(templateVersion))
            .Returns(validationResult);

            FundingTemplateService fundingTemplateService = CreateFundingTemplateService(fundingTemplateValidationService: fundingTemplateValidationService);

            //Act
            IActionResult result = await fundingTemplateService.SaveFundingTemplate(createdAtActionName, createdAtControllerName, template, fundingStreamId, fundingPeriodId, templateVersion);

            //Assert
            result
            .Should()
            .BeAssignableTo <BadRequestObjectResult>();

            BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;

            badRequestObjectResult
            .Value
            .Should()
            .BeOfType <SerializableError>();

            SerializableError modelState = badRequestObjectResult.Value as SerializableError;

            modelState
            .Should()
            .NotBeNull();

            modelState
            .Values
            .Should()
            .HaveCount(2);
        }
コード例 #5
0
 public static void ContainsKeyAndErrorMessage(this SerializableError error, string key, string errorMessage)
 {
     error.Should().NotBeNull();
     error.ContainsKey(key).Should().BeTrue();
     ((string[])error[key])[0].Should().Be(errorMessage);
 }