예제 #1
0
        public async Task When_Object_Returns_No_Validation_Failures_Then_GetFailures_Returns_Empty_Collection()
        {
            // Arrange
            var validatedObject = new ObjectWithNoFailures();
            var validator       = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });

            // Act
            var failures = await validator.GetValidationResultsAsync(validatedObject, null);

            // Assert
            failures.Count.Should().Be(0);
        }
예제 #2
0
        public async Task When_Object_Returns_One_Validation_Failure_Then_GetFailures_Returns_Collection_With_One_Result()
        {
            // Arrange
            var validatedObject = new ObjectWithOneFailure();
            var validator       = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });

            // Act
            var failures = await validator.GetValidationResultsAsync(validatedObject, null);

            // Assert
            failures.Count.Should().BeGreaterThan(0);
            failures.AsDictionary().First().Value.Should().Contain("First Message");
        }
예제 #3
0
        public void When_Value_Type_Is_Not_Numeric_Then_Exception_Is_Thrown()
        {
            // Arrange
            var validatable = new Validatable
            {
                PropertyToCheckAgainst    = DateTime.Now,
                MustBeGreaterThanProperty = 1
            };

            var validator = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });

            // Assert
            Assert.ThrowsAsync <InvalidOperationException>(async() => await validator.GetValidationResultsAsync(validatable, null));
        }
예제 #4
0
        public async Task When_Object_Returns_Two_Validation_Failures_Then_GetFailures_Returns_Collection_With_Two_Results()
        {
            // Arrange
            var validatedObject = new ObjectWithTwoFailures();
            var validator       = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });

            // Act
            var failures = await validator.GetValidationResultsAsync(validatedObject, null);

            // Assert
            failures.Count.Should().BeGreaterThan(0);
            failures.AsDictionary()[ValidationFailures.FormLevelPropertyName].Should().Contain("First Message");
            failures.AsDictionary()[ValidationFailures.FormLevelPropertyName].Should().Contain("Second Message");
        }
        public async Task When_PropertyToCheckAgainst_Has_Value_That_Does_Not_Force_ConditionallyRequiredProperty_To_Be_Required_And_ConditionallyRequiredProperty_Is_Populated_Then_Valid()
        {
            // Arrange
            var validatable = new Validatable {
                PropertyToCheckAgainst = "NotRequired", ConditionallyRequiredProperty = 1
            };
            var validator = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });

            // Act
            var failures = await validator.GetValidationResultsAsync(validatable, null);

            var failedProperties = failures.AsDictionary().Keys;

            // Assert
            CollectionAssert.DoesNotContain(failedProperties, "ConditionallyRequiredProperty");
        }
        public async Task When_PropertyToCheckAgainst_Has_Correct_Value_And_ConditionallyRequiredProperty_Is_Null_Then_Invalid()
        {
            // Arrange
            var validatable = new Validatable {
                PropertyToCheckAgainst = "Required", ConditionallyRequiredProperty = null
            };
            var validator = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });

            // Act
            var failures = await validator.GetValidationResultsAsync(validatable, null);

            var failedProperties = failures.AsDictionary().Keys;

            // Assert
            CollectionAssert.Contains(failedProperties, "ConditionallyRequiredProperty");
        }
        public async Task When_PropertyToCheckAgainst_Has_First_Correct_Value_And_ConditionallyRequiredProperty_Is_Populated_Then_Valid()
        {
            // Arrange
            var validatable = new Given_String_Property_RequiredIfNot_Other_String_Property_Is_Specified_Value.Validatable {
                PropertyToCheckAgainst = "Required", ConditionallyRequiredProperty = "Populated"
            };
            var validator = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });

            // Act
            var failures = await validator.GetValidationResultsAsync(validatable, null);

            var failedProperties = failures.AsDictionary().Keys;

            // Assert
            CollectionAssert.DoesNotContain(failedProperties, "ConditionallyRequiredProperty");
        }
예제 #8
0
        public async Task When_Value_Type_Is_Numeric_And_Greater_Than_Required_Then_Valid(Type type, object value)
        {
            // Arrange
            var validatable = new Validatable
            {
                PropertyToCheckAgainst    = Convert.ChangeType(value, type),
                MustBeGreaterThanProperty = Convert.ChangeType(10, type)
            };

            var validator = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });

            // Act
            var failures = await validator.GetValidationResultsAsync(validatable, null);

            var failedProperties = failures.AsDictionary().Keys;

            // Assert
            CollectionAssert.DoesNotContain(failedProperties, "MustBeGreaterThanProperty");
        }
예제 #9
0
        public async Task When_Value_Is_Less_Than_PropertyToCheck_Value_Then_InValid()
        {
            // Arrange
            var validatable = new Validatable
            {
                PropertyToCheckAgainst    = 1,
                MustBeGreaterThanProperty = 0
            };

            var validator = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });

            // Act
            var failures = await validator.GetValidationResultsAsync(validatable, null);

            var failedProperties = failures.AsDictionary().Keys;

            // Assert
            CollectionAssert.Contains(failedProperties, "MustBeGreaterThanProperty");
        }
 public void OneTimeSetUp()
 {
     validator = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });
 }
 public void OneTimeSetUp()
 {
     validator           = new BlueprintValidator(new IValidationSource[] { new DataAnnotationsValidationSource() });
     apiOperationContext = null;
 }