示例#1
0
        public void Validate_NoExplicitPropertyNameSet()
        {
            var result = _propertyRule.Validate(new ValidationContext(_customer)).ToArray().First();

            Assert.That(result.PropertyName, Is.EqualTo("LastName"));
            Assert.That(result.ErrorMessage, Is.EqualTo("'Last Name' must not be empty."));
        }
        public void Nullable_object_with_async_condition_should_not_throw()
        {
            var          builder = _validator.RuleFor(x => x.NullableInt.Value);
            PropertyRule rule    = null;

            builder.Configure(r => rule = r);

            builder.GreaterThanOrEqualTo(3).WhenAsync((x, c) => Task.FromResult(x.NullableInt != null));
            rule.Validate(new ValidationContext <Person>(new Person(), new PropertyChain(), new DefaultValidatorSelector()));
        }
        public void Result_should_use_custom_property_name_when_no_property_name_can_be_determined()
        {
            var builder = _validator.RuleFor(x => x.CalculateSalary());

            builder.GreaterThan(100).WithName("Foo");
            PropertyRule rule = null;

            builder.Configure(r => rule = r);
            var results = rule.Validate(new ValidationContext <Person>(new Person(), new PropertyChain(), new DefaultValidatorSelector()));

            results.Single().PropertyName.ShouldEqual("Foo");
        }
        public async Task ValidateShouldFailWhenNonOptionalPropertyIsMissing()
        {
            // Arrange
            var project = new ProjectBuilder().Build();

            var data = new PropertyRuleData
            {
                Name     = "Required-Property",
                Required = true
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.True(actual.IsError);
        }
        public async Task ValidateShouldFailWhenForbiddenPropertyIsFound()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithPropertyGroup().WithProperty("Forbidden-Property", "true").Build();

            var data = new PropertyRuleData
            {
                Forbidden = true,
                Name      = "Forbidden-Property"
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.True(actual.IsError);
        }
        public async Task ValidateShouldFailWhenPropertyHasWrongValue()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithPropertyGroup()
                          .WithProperty("Property", "invalid")
                          .Build();

            var data = new PropertyRuleData
            {
                Name  = "Property",
                Value = "valid"
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.True(actual.IsError);
        }
        public async Task ValidateShouldSucceedWhenPropertyExists()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithPropertyGroup()
                          .WithProperty("TreatWarningsAsErrors", "true")
                          .Build();

            var data = new PropertyRuleData
            {
                Name     = "TreatWarningsAsErrors",
                Required = true
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.False(actual.IsError);
        }
        public async Task ValidateShouldFailWhenPropertyIsFoundTooFewTimes()
        {
            // Arrange
            var project = new ProjectBuilder()
                          .WithPropertyGroup()
                          .WithProperty("Property", "value")
                          .WithPropertyGroup()
                          .WithProperty("Property", "value")
                          .Build();

            var data = new PropertyRuleData
            {
                Name = "Property",
                MinimumOccurrences = 3
            };

            var sut = new PropertyRule(data);

            // Act
            var actual = await sut.Validate(project);

            // Assert
            Assert.True(actual.IsError);
        }