public void Validate_TypeWithArrayOfCustomNestedTypesWithArrayPropertyIsSetupPartially_Fails() { var instance = new TypeWithArrayOfCustomNestedTypes { NestedTypeArray = new[] { null, // Should fail coz collection element is required. new NestedType { NestedProperty = "Some value" }, new NestedType() // Should fail coz there is no setup required property. } }; var result = RecursiveValidator.Validate(instance); result.Should().BeOfType <FailedResult>() .Which.Code.Should().Be(CoreErrorCodes.ValidationFailed.Code); var errorDetails = ((FailedResult)result).Details.ToArray(); errorDetails.Length.Should().Be(3); errorDetails[0].Source.Should().Be($"{nameof(TypeWithArrayOfCustomNestedTypes)}.{nameof(TypeWithArrayOfCustomNestedTypes.Property)}"); errorDetails[0].CodeInfo.Code.Should().BeEquivalentTo(AnnotationErrorCodes.Required.Code); errorDetails[1].Source.Should().Be($"{nameof(TypeWithArrayOfCustomNestedTypes)}.{nameof(TypeWithArrayOfCustomNestedTypes.NestedTypeArray)}.0"); errorDetails[1].CodeInfo.Code.Should().BeEquivalentTo(AnnotationErrorCodes.Required.Code); errorDetails[2].Source.Should().Be($"{nameof(TypeWithArrayOfCustomNestedTypes)}.{nameof(TypeWithArrayOfCustomNestedTypes.NestedTypeArray)}.2.{nameof(NestedType.NestedProperty)}"); errorDetails[2].CodeInfo.Code.Should().BeEquivalentTo(AnnotationErrorCodes.Required.Code); }
public void Validate_TypeWithArrayOfCustomNestedTypesWithArrayPropertyHasUkrainianLetters_Fails() { var instance = new TypeWithArrayOfCustomNestedTypes { Property = "Some property", NestedTypeArray = new[] { new NestedType { NestedProperty = "Some value" }, new NestedType { NestedProperty = "я люблю українську мову" } // Should fail coz of regular expression verification. } }; var result = RecursiveValidator.Validate(instance); result.Should().BeOfType <FailedResult>() .Which.Code.Should().Be(CoreErrorCodes.ValidationFailed.Code); var errorDetails = ((FailedResult)result).Details.ToArray(); errorDetails.Length.Should().Be(1); errorDetails[0].Source.Should().Be($"{nameof(TypeWithArrayOfCustomNestedTypes)}.{nameof(TypeWithArrayOfCustomNestedTypes.NestedTypeArray)}.1.{nameof(NestedType.NestedProperty)}"); errorDetails[0].CodeInfo.Code.Should().BeEquivalentTo(AnnotationErrorCodes.RegularExpression.Code); }
public void Validate_TypeWithArrayOfCustomNestedTypesIsNotSetup_Fails() { var instance = new TypeWithArrayOfCustomNestedTypes(); var result = RecursiveValidator.Validate(instance); result.Should().BeOfType <FailedResult>(); var errorDetails = ((FailedResult)result).Details.ToArray(); errorDetails[0].Source.Should().Be($"{nameof(TypeWithArrayOfCustomNestedTypes)}.{nameof(TypeWithArrayOfCustomNestedTypes.Property)}"); errorDetails[0].CodeInfo.Code.Should().BeEquivalentTo(AnnotationErrorCodes.Required.Code); errorDetails[1].Source.Should().Be($"{nameof(TypeWithArrayOfCustomNestedTypes)}.{nameof(TypeWithArrayOfCustomNestedTypes.NestedTypeArray)}"); errorDetails[1].CodeInfo.Code.Should().BeEquivalentTo(AnnotationErrorCodes.NotEmpty.Code); }
public void Validate_TypeWithArrayOfCustomNestedTypes_SuccessTest() { var instance = new TypeWithArrayOfCustomNestedTypes { Property = "Some property", NestedTypeArray = new[] { new NestedType { NestedProperty = "Some value" }, new NestedType { NestedProperty = "Some another value" } // Should fail coz of regular expression verification. } }; var result = RecursiveValidator.Validate(instance); result.Success.Should().BeTrue(); }
public void Validate_TypeWithArrayOfCustomNestedTypesWithStringsArrayIsInvalid_Fails() { var instance = new TypeWithArrayOfCustomNestedTypes { Property = "Some property", NestedTypeArray = new[] { new NestedType { NestedProperty = "Some value" }, new NestedType { NestedProperty = "Some another value", StringsArray = new[] { "123", // String is too short. "some valid value", "я люблю українську мову" // String contsins not English letters. } }, } }; var result = RecursiveValidator.Validate(instance); result.Should().BeOfType <FailedResult>() .Which.Code.Should().Be(CoreErrorCodes.ValidationFailed.Code); var errorDetails = ((FailedResult)result).Details.ToArray(); errorDetails.Length.Should().Be(2); errorDetails[0].Source.Should().Be($"{nameof(TypeWithArrayOfCustomNestedTypes)}.{nameof(TypeWithArrayOfCustomNestedTypes.NestedTypeArray)}.1.{nameof(NestedType.StringsArray)}.0"); errorDetails[0].CodeInfo.Code.Should().BeEquivalentTo(AnnotationErrorCodes.MinLength.Code); errorDetails[1].Source.Should().Be($"{nameof(TypeWithArrayOfCustomNestedTypes)}.{nameof(TypeWithArrayOfCustomNestedTypes.NestedTypeArray)}.1.{nameof(NestedType.StringsArray)}.2"); errorDetails[1].CodeInfo.Code.Should().BeEquivalentTo(AnnotationErrorCodes.RegularExpression.Code); }