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); }
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"); }
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)); }
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"); }
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"); }
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; }