public void Validate_ValidatesAsExpected(CalculationCreateModel model, bool expectedResult, IEnumerable <string> expectedErrors) { //Arrange ISpecificationsRepository specsRepo = CreateSpecificationsRepository(false); Specification specification = new Specification { Current = new SpecificationVersion() }; specsRepo .GetSpecificationById(specificationId) .Returns(specification); CalculationCreateModelValidator validator = CreateValidator(specsRepo); //Act ValidationResult result = validator.Validate(model); //Assert result .IsValid .Should() .Be(expectedResult); foreach (var error in expectedErrors) { result.Errors.Count(e => e.ErrorMessage == error).Should().Be(1, $"Expected to find error message '{error}'"); } result .Errors .Count .Should() .Be(expectedErrors.Count()); }
public void ValidateWithSpecificationAndFundingStreams_ValidatesAsExpected(CalculationCreateModel model, Specification specification, IEnumerable <FundingStream> fundingStreams, bool expectedResult, IEnumerable <string> expectedErrors) { //Arrange ISpecificationsRepository specsRepo = CreateSpecificationsRepository(false); specsRepo .GetSpecificationById(specificationId) .Returns(specification); specsRepo .GetFundingStreams() .Returns(fundingStreams); CalculationCreateModelValidator validator = CreateValidator(specsRepo); //Act ValidationResult result = validator.Validate(model); //Assert result .IsValid .Should() .Be(expectedResult); foreach (var error in expectedErrors) { result .Errors .Select(e => e.ErrorMessage) .Distinct() .Count(e => e == error) .Should() .Be(1, $"Expected to find error message '{error}'"); } result .Errors .Count .Should() .Be(expectedErrors.Count()); }
public void Validate_GivenNameAlreadyExists_ValidIsFalse() { //Arrange CalculationCreateModel model = CreateModel(); ISpecificationsRepository repository = CreateSpecificationsRepository(true); Specification specification = new Specification { Current = new SpecificationVersion() }; repository .GetSpecificationById(specificationId) .Returns(specification); ICalculationsRepository calculationsRepository = Substitute.For <ICalculationsRepository>(); calculationsRepository .IsCalculationNameValid(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()) .Returns(false); CalculationCreateModelValidator validator = CreateValidator(repository, calculationsRepository); //Act ValidationResult result = validator.Validate(model); //Assert result .IsValid .Should() .BeFalse(); result .Errors .Count .Should() .Be(1); result.Errors.Single().ErrorMessage.Should().Be("Calculation with the same generated source code name already exists in this specification"); calculationsRepository .Received(1) .IsCalculationNameValid(specificationId, name); }