public void IsValidChangedEventRaised_OnIsValidChange()
        {
            // Arrange
            var startValue = "123456";
            var sut        = new ValidatableValue <string>
            {
                Value           = startValue,
                ValidationRules = new IValidationRule <string>[]
                {
                    new StringLengthValidationRule("Length Error", 2, false, true),
                    new StringLengthValidationRule(_ERROR_MESSAGE, 5)
                }
            };

            // Act
            sut.IsValid.Should().BeTrue();
            sut.IsNotValid.Should().BeFalse();
            using (FluentAssertions.Events.IMonitor <ValidatableValue <string> > monitor = sut.Monitor())
            {
                sut.RaiseValidation();

                // Assert
                monitor.Should().Raise(nameof(ValidatableValue <string> .IsValidChanged))
                .WithSender(sut)
                .WithArgs <IsValidEventArgs>(t => t.IsValid == false);
            }
        }
        public void RaiseValidation_ValidateCurrentValue()
        {
            // Arrange
            var startValue = "123456";
            var sut        = new ValidatableValue <string>
            {
                Value           = startValue,
                ValidationRules = new IValidationRule <string>[]
                {
                    new StringLengthValidationRule("Length Error", 2, false, true),
                    new StringLengthValidationRule(_ERROR_MESSAGE, 5)
                }
            };

            // Act
            sut.IsValid.Should().BeTrue();
            sut.IsNotValid.Should().BeFalse();
            sut.RaiseValidation();

            // Assert
            sut.IsValid.Should().BeFalse();
            sut.IsNotValid.Should().BeTrue();
        }
Ejemplo n.º 3
0
        public MainViewModel()
        {
            // Init validatable values
            ContainsString = new ValidatableValue <string>
            {
                ValidationRules = new IValidationRule <string>[]
                {
                    new ContainsValidationRule <string>("Unknown value", new[] { "test", "example", "fake" })
                }
            };
            ContainsString.RaiseValidation();

            NotContainsString = new ValidatableValue <string>
            {
                ValidationRules = new IValidationRule <string>[]
                {
                    new ContainsValidationRule <string>("Value already exists", new[] { "test", "example", "fake" }, true)
                }
            };
            NotContainsString.RaiseValidation();

            ContainsInteger = new ValidatableValue <int>
            {
                ValidationRules = new IValidationRule <int>[]
                {
                    new ContainsValidationRule <int>("Unknown value", new[] { 5, 12, 25 })
                }
            };
            ContainsString.RaiseValidation();

            Email = new ValidatableValue <string>
            {
                ValidationRules = new IValidationRule <string>[]
                {
                    new EmailValidationRule("Not valid email address", true)
                }
            };
            Email.RaiseValidation();

            EqualsValue = new ValidatableValue <string>
            {
                ValidationRules = new IValidationRule <string>[]
                {
                    new EqualValuesValidationRule <string>("Values are not equal", () => Email.Value)
                }
            };
            EqualsValue.RaiseValidation();

            NullValue = new ValidatableValue <ValueHolder>
            {
                ValidationRules = new IValidationRule <ValueHolder>[]
                {
                    new NullValidationRule <ValueHolder>("Value is null")
                }
            };
            NullValue.RaiseValidation();

            PhoneNumber = new ValidatableValue <string>
            {
                ValidationRules = new IValidationRule <string>[]
                {
                    new PhoneNumberValidationRule("Not valid phone number")
                }
            };
            PhoneNumber.RaiseValidation();

            IntRange = new ValidatableValue <int>
            {
                ValidationRules = new IValidationRule <int>[]
                {
                    new PrimitiveRangeValidationRule <int>("Value should be between 10 and 50", 10, 50)
                }
            };
            IntRange.RaiseValidation();

            RegexValue = new ValidatableValue <string>
            {
                ValidationRules = new IValidationRule <string>[]
                {
                    new RegexValidationRule("Allowed format: dd.MM.yyyy", @"^\d{2}\.\d{2}\.\d{4}$")
                }
            };
            RegexValue.RaiseValidation();

            MixedString = new ValidatableValue <string>
            {
                ValidationRules = new IValidationRule <string>[]
                {
                    new RequiredValidationRule("Required!"),
                    new StringLengthValidationRule("Password should have at least 8 characters!", 8, false),
                    new StringLengthValidationRule("Password should have at maximum 32 characters!", 32)
                }
            };
            MixedString.RaiseValidation();

            // Values
            Values = new[]
            {
                null,
                new ValueHolder {
                    Id = 1, DislayValue = "Value 1"
                },
                new ValueHolder {
                    Id = 2, DislayValue = "Value 2"
                },
                new ValueHolder {
                    Id = 3, DislayValue = "Value 3"
                }
            };
        }