Beispiel #1
0
        public void CreateValidatorForRuleWithMethodReferenceReturnsCompositeValidatorWithMethodValueAccess()
        {
            ValidationRulesetData    ruleData         = new ValidationRulesetData();
            ValidatedMethodReference methodReference1 = new ValidatedMethodReference("PublicMethod");

            ruleData.Methods.Add(methodReference1);
            ValidatedMethodReference methodReference2 = new ValidatedMethodReference("SecondPublicMethod");

            ruleData.Methods.Add(methodReference2);
            methodReference1.Validators.Add(new MockValidatorData("validator1", false));
            methodReference1.Validators.Get("validator1").MessageTemplate = "validator 1 message";
            methodReference2.Validators.Add(new MockValidatorData("validator2", false));
            methodReference2.Validators.Get("validator2").MessageTemplate = "validator 2 message";

            Validator validator = builder.CreateValidatorForRule(typeof(TestClass), ruleData);

            Assert.IsNotNull(validator);
            Assert.AreSame(typeof(AndCompositeValidator), validator.GetType());
            IList <Validator> validators = ValidationTestHelper.CreateListFromEnumerable(((AndCompositeValidator)validator).Validators);

            Assert.AreEqual(2, validators.Count);
            Assert.AreEqual(2, mockFactory.requestedMembers.Count);
            ValueAccessValidatorBuilder valueAccessValidatorBuilder1 = mockFactory.requestedMembers["TestClass.PublicMethod"];

            Assert.AreSame(valueAccessValidatorBuilder1.BuiltValidator, validators[0]);
            Assert.AreEqual(1, valueAccessValidatorBuilder1.ValueValidators.Count);
            Assert.AreEqual("validator 1 message", ((MockValidator <object>)valueAccessValidatorBuilder1.ValueValidators[0]).MessageTemplate);
            ValueAccessValidatorBuilder valueAccessValidatorBuilder2 = mockFactory.requestedMembers["TestClass.SecondPublicMethod"];

            Assert.AreSame(valueAccessValidatorBuilder2.BuiltValidator, validators[1]);
            Assert.AreEqual(1, valueAccessValidatorBuilder2.ValueValidators.Count);
            Assert.AreEqual("validator 2 message", ((MockValidator <object>)valueAccessValidatorBuilder2.ValueValidators[0]).MessageTemplate);
        }
Beispiel #2
0
        public void CreateValidatorForExistingTypeReturnsNonEmptyValidatorBasedOnRuleDefinition()
        {
            ValidatedTypeReference typeReference = new ValidatedTypeReference(typeof(TestClass));
            ValidationRulesetData  ruleData      = new ValidationRulesetData("ruleset1");

            typeReference.Rulesets.Add(ruleData);
            ValidatedMethodReference methodReference1 = new ValidatedMethodReference("PublicMethod");

            ruleData.Methods.Add(methodReference1);
            ValidatedMethodReference methodReference2 = new ValidatedMethodReference("NonPublicMethod");

            ruleData.Methods.Add(methodReference2);
            methodReference1.Validators.Add(new MockValidatorData("validator1", false));
            methodReference1.Validators.Get("validator1").MessageTemplate = "validator 1 message";
            methodReference2.Validators.Add(new MockValidatorData("validator2", false));
            methodReference2.Validators.Get("validator2").MessageTemplate = "validator 2 message";

            Validator validator = this.builder.CreateValidator(typeof(TestClass), typeReference, "ruleset1");

            Assert.IsNotNull(validator);
            Assert.AreSame(typeof(AndCompositeValidator), validator.GetType());
            IList <Validator> validators = ValidationTestHelper.CreateListFromEnumerable(((AndCompositeValidator)validator).Validators);

            Assert.AreEqual(1, validators.Count);
            Assert.AreEqual(1, this.mockFactory.requestedMembers.Count);
            ValueAccessValidatorBuilder valueAccessValidatorBuilder1 = this.mockFactory.requestedMembers["TestClass.PublicMethod"];

            Assert.AreSame(valueAccessValidatorBuilder1.BuiltValidator, validators[0]);
            Assert.AreEqual(1, valueAccessValidatorBuilder1.ValueValidators.Count);
            Assert.AreEqual("validator 1 message", ((MockValidator <object>)valueAccessValidatorBuilder1.ValueValidators[0]).MessageTemplate);
        }
Beispiel #3
0
        public void CreateValidatorForDefaultRuleForExistingTypeReturnsNonEmptyValidatorBasedOnDefaultRuleDefinition()
        {
            ValidatedTypeReference typeReference = new ValidatedTypeReference(typeof(TestClass));

            typeReference.DefaultRuleset = "ruleset1";
            ValidationRulesetData ruleData = new ValidationRulesetData("ruleset1");

            typeReference.Rulesets.Add(ruleData);
            ValidatedMethodReference methodReference1 = new ValidatedMethodReference("PublicMethod");

            ruleData.Methods.Add(methodReference1);
            ValidatedMethodReference methodReference2 = new ValidatedMethodReference("NonPublicMethod");

            ruleData.Methods.Add(methodReference2);
            methodReference1.Validators.Add(new MockValidatorData("validator1", false));
            methodReference1.Validators.Get("validator1").MessageTemplate = "validator 1 message";
            methodReference2.Validators.Add(new MockValidatorData("validator2", false));
            methodReference2.Validators.Get("validator2").MessageTemplate = "validator 2 message";

            Validator validator = builder.CreateValidator(typeof(TestClass), typeReference, string.Empty);

            Assert.IsNotNull(validator);
            Assert.AreSame(typeof(ValueAccessValidator), validator.GetType());
            ValueAccessValidatorBuilder valueAccessValidatorBuilder1 = mockFactory.requestedMembers["TestClass.PublicMethod"];

            Assert.AreSame(valueAccessValidatorBuilder1.BuiltValidator, validator);
            Assert.AreEqual("validator 1 message", ((MockValidator <object>)valueAccessValidatorBuilder1.ValueValidators[0]).MessageTemplate);
        }
Beispiel #4
0
        public void CreateValidatorForDefaultRuleForExistingTypeNonExistingDefaultRuleSetReturnsEmptyValidator()
        {
            ValidatedTypeReference typeReference = new ValidatedTypeReference(typeof(TestClass));

            typeReference.DefaultRuleset = "ruleset2";
            ValidationRulesetData ruleData = new ValidationRulesetData("ruleset1");

            typeReference.Rulesets.Add(ruleData);
            ValidatedMethodReference methodReference1 = new ValidatedMethodReference("PublicMethod");

            ruleData.Methods.Add(methodReference1);
            ValidatedMethodReference methodReference2 = new ValidatedMethodReference("NonPublicMethod");

            ruleData.Methods.Add(methodReference2);
            methodReference1.Validators.Add(new MockValidatorData("validator1", false));
            methodReference1.Validators.Get("validator1").MessageTemplate = "validator 1 message";
            methodReference2.Validators.Add(new MockValidatorData("validator2", false));
            methodReference2.Validators.Get("validator2").MessageTemplate = "validator 2 message";

            Validator validator = builder.CreateValidator(typeof(TestClass), typeReference, string.Empty);

            Assert.IsNotNull(validator);
            Assert.AreSame(typeof(AndCompositeValidator), validator.GetType());
            IList <Validator> validators = ValidationTestHelper.CreateListFromEnumerable(((AndCompositeValidator)validator).Validators);

            Assert.AreEqual(0, validators.Count);
            Assert.AreEqual(0, mockFactory.requestedMembers.Count);
        }
Beispiel #5
0
        public void MethodNodeHasConfiguredMethodNameAsNodeName()
        {
            ValidatedMethodReference methodReference = new ValidatedMethodReference("MethodName");
            MethodNode methodNode = new MethodNode(methodReference);

            Assert.AreEqual("MethodName", methodNode.Name);
        }
Beispiel #6
0
        public void CreateValidatorForMethodReferenceWithoutValidatorsReturnsNull()
        {
            ValidatedMethodReference methodReference = new ValidatedMethodReference("PublicMethod");

            Validator validator = builder.CreateValidatorForMethod(typeof(TestClass), methodReference);

            Assert.IsNull(validator);
        }
        /// <summary>
        /// Updates the flyweight for a method.
        /// </summary>
        /// <param name="validatedMethodReference">The method reference configuration object.</param>
        /// <param name="methodInfo">The method.</param>
        public void UpdateFlyweight(ValidatedMethodReference validatedMethodReference, MethodInfo methodInfo)
        {
            if (methodInfo == null)
            {
                throw new ArgumentNullException("methodInfo");
            }

            UpdateFlyweight(validatedMethodReference, methodInfo, methodInfo.ReturnType);
        }
Beispiel #8
0
        public void CanDeserializeSerializedSectionWithNamedRuleSpecifyingMultipleValidatorsForMethod()
        {
            ValidationSettings     rwSettings   = new ValidationSettings();
            ValidatedTypeReference rwStringType = new ValidatedTypeReference(typeof(string));

            rwSettings.Types.Add(rwStringType);
            ValidationRulesetData rwValidationRule = new ValidationRulesetData("ruleset");

            rwStringType.Rulesets.Add(rwValidationRule);
            ValidatorData rwValidatorData = new MockValidatorData("validator1", true);

            rwValidationRule.Validators.Add(rwValidatorData);
            ValidatedMethodReference rwValidationMethodReference = new ValidatedMethodReference("System.Object.GetHashCode");

            rwValidationRule.Methods.Add(rwValidationMethodReference);
            ValidatorData rwMethodValidatorData1 = new MockValidatorData("ruleset-validator1", false);

            rwValidationMethodReference.Validators.Add(rwMethodValidatorData1);
            ValidatorData rwMethodValidatorData2 = new MockValidatorData("ruleset-validator2", false);

            rwValidationMethodReference.Validators.Add(rwMethodValidatorData2);

            IDictionary <string, ConfigurationSection> sections = new Dictionary <string, ConfigurationSection>();

            sections[ValidationSettings.SectionName] = rwSettings;

            using (ConfigurationFileHelper configurationFileHelper = new ConfigurationFileHelper(sections))
            {
                IConfigurationSource configurationSource = configurationFileHelper.ConfigurationSource;

                ValidationSettings roSettings = configurationSource.GetSection(ValidationSettings.SectionName) as ValidationSettings;

                Assert.IsNotNull(roSettings);
                Assert.AreEqual(1, roSettings.Types.Count);
                Assert.AreEqual(typeof(string).FullName, roSettings.Types.Get(0).Name);
                Assert.AreEqual(1, roSettings.Types.Get(0).Rulesets.Count);
                Assert.AreEqual("ruleset", roSettings.Types.Get(0).Rulesets.Get(0).Name);
                Assert.AreEqual(1, roSettings.Types.Get(0).Rulesets.Get(0).Validators.Count);
                Assert.AreEqual("validator1", roSettings.Types.Get(0).Rulesets.Get(0).Validators.Get(0).Name);
                Assert.AreSame(typeof(MockValidatorData), roSettings.Types.Get(0).Rulesets.Get(0).Validators.Get(0).GetType());
                Assert.AreEqual(true, ((MockValidatorData)roSettings.Types.Get(0).Rulesets.Get(0).Validators.Get(0)).ReturnFailure);
                Assert.AreEqual(1, roSettings.Types.Get(0).Rulesets.Get(0).Methods.Count);
                Assert.AreEqual("System.Object.GetHashCode", roSettings.Types.Get(0).Rulesets.Get(0).Methods.Get(0).Name);
                Assert.AreEqual(2, roSettings.Types.Get(0).Rulesets.Get(0).Methods.Get(0).Validators.Count);
                Assert.AreEqual("ruleset-validator1", roSettings.Types.Get(0).Rulesets.Get(0).Methods.Get(0).Validators.Get(0).Name);
                Assert.AreSame(typeof(MockValidatorData), roSettings.Types.Get(0).Rulesets.Get(0).Methods.Get(0).Validators.Get(0).GetType());
                Assert.AreEqual(false, ((MockValidatorData)roSettings.Types.Get(0).Rulesets.Get(0).Methods.Get(0).Validators.Get(0)).ReturnFailure);
                Assert.AreEqual("ruleset-validator2", roSettings.Types.Get(0).Rulesets.Get(0).Methods.Get(0).Validators.Get(1).Name);
                Assert.AreSame(typeof(MockValidatorData), roSettings.Types.Get(0).Rulesets.Get(0).Methods.Get(0).Validators.Get(1).GetType());
                Assert.AreEqual(false, ((MockValidatorData)roSettings.Types.Get(0).Rulesets.Get(0).Methods.Get(0).Validators.Get(1)).ReturnFailure);
            }
        }
Beispiel #9
0
        public void CreateValidatorForMethodWithArgumentsReferenceWithValidatorsReturnsNull()
        {
            ValidatedMethodReference methodReference = new ValidatedMethodReference("PublicMethodWithArguments");

            methodReference.Validators.Add(new MockValidatorData("validator1", false));
            methodReference.Validators.Get("validator1").MessageTemplate = "validator 1 message";
            methodReference.Validators.Add(new MockValidatorData("validator2", false));
            methodReference.Validators.Get("validator2").MessageTemplate = "validator 2 message";

            Validator validator = builder.CreateValidatorForMethod(typeof(TestClass), methodReference);

            Assert.IsNull(validator);
            Assert.AreEqual(0, mockFactory.requestedMembers.Count);
        }
        public void ValidatedMethodsEnumerableSkipsPublicMethodWithoutValidators()
        {
            ValidationRulesetData    rulesetData = new ValidationRulesetData();
            ValidatedMethodReference publicMethodWithoutValidatorsReference
                = new ValidatedMethodReference("PublicMethodWithoutValidators");

            rulesetData.Methods.Add(publicMethodWithoutValidatorsReference);

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator <IValidatedElement> validatedMethodsEnumerator
                = ((IValidatedType)validatedType).GetValidatedMethods().GetEnumerator();

            Assert.IsFalse(validatedMethodsEnumerator.MoveNext());
        }
Beispiel #11
0
        private void BuildMethodReferences(ValidationRulesetData validationRule, RuleSetNode ruleNode)
        {
            foreach (MethodNode methodNode in ruleNode.Hierarchy.FindNodesByType(ruleNode, typeof(MethodNode)))
            {
                ValidatedMethodReference methodReference = new ValidatedMethodReference();
                methodReference.Name = methodNode.Name;

                foreach (ValidatorData validator in FindValidators(methodNode))
                {
                    methodReference.Validators.Add(validator);
                }

                validationRule.Methods.Add(methodReference);
            }
        }
        public void ValidatedMethodsEnumerableIncludesPublicMethodWithValidatorsOnly()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            ValidatedMethodReference nonExistingMethodReference
                = new ValidatedMethodReference("NonExistingMethod");

            rulesetData.Methods.Add(nonExistingMethodReference);
            nonExistingMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedMethodReference publicMethodWithoutValidatorsReference
                = new ValidatedMethodReference("PublicMethodWithoutValidators");

            rulesetData.Methods.Add(publicMethodWithoutValidatorsReference);

            ValidatedMethodReference nonPublicMethodReference
                = new ValidatedMethodReference("NonPublicMethod");

            rulesetData.Methods.Add(nonPublicMethodReference);
            nonPublicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedMethodReference publicMethodReference
                = new ValidatedMethodReference("PublicMethod");

            rulesetData.Methods.Add(publicMethodReference);
            publicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedMethodReference secondPublicMethodReference
                = new ValidatedMethodReference("SecondPublicMethod");

            rulesetData.Methods.Add(secondPublicMethodReference);
            secondPublicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator <IValidatedElement> validatedMethodsEnumerator
                = ((IValidatedType)validatedType).GetValidatedMethods().GetEnumerator();

            Assert.IsTrue(validatedMethodsEnumerator.MoveNext());
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass).GetMethod("PublicMethod"),
                           validatedMethodsEnumerator.Current.MemberInfo);
            Assert.IsTrue(validatedMethodsEnumerator.MoveNext());
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass).GetMethod("SecondPublicMethod"),
                           validatedMethodsEnumerator.Current.MemberInfo);
            Assert.AreSame(typeof(string), validatedMethodsEnumerator.Current.TargetType);

            Assert.IsFalse(validatedMethodsEnumerator.MoveNext());
        }
        public void ValidatedMethodsEnumerableSkipsVoidPublicMethodWithValidators()
        {
            ValidationRulesetData    rulesetData = new ValidationRulesetData();
            ValidatedMethodReference nonPublicMethodReference
                = new ValidatedMethodReference("VoidPublicMethod");

            rulesetData.Methods.Add(nonPublicMethodReference);
            nonPublicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator <IValidatedElement> validatedMethodsEnumerator
                = ((IValidatedType)validatedType).GetValidatedMethods().GetEnumerator();

            Assert.IsFalse(validatedMethodsEnumerator.MoveNext());
        }
Beispiel #14
0
        public Validator CreateValidatorForMethod(Type type, ValidatedMethodReference methodReference)
        {
            if (methodReference.Validators.Count == 0)
            {
                return(null);
            }

            MethodInfo methodInfo = ValidationReflectionHelper.GetMethod(type, methodReference.Name, false);

            if (methodInfo == null)
            {
                return(null);
            }

            ConfigurationValidatedElement validatedElement = new ConfigurationValidatedElement(methodReference, methodInfo);

            return(CreateValidatorForValidatedElement(validatedElement, this.GetCompositeValidatorBuilderForMethod));
        }
Beispiel #15
0
        public void CreateValidatorForMethodReferenceWithValidatorsReturnsValueAccessValidator()
        {
            ValidatedMethodReference methodReference = new ValidatedMethodReference("PublicMethod");

            methodReference.Validators.Add(new MockValidatorData("validator1", false));
            methodReference.Validators.Get("validator1").MessageTemplate = "validator 1 message";
            methodReference.Validators.Add(new MockValidatorData("validator2", false));
            methodReference.Validators.Get("validator2").MessageTemplate = "validator 2 message";

            Validator validator = builder.CreateValidatorForMethod(typeof(TestClass), methodReference);

            Assert.IsNotNull(validator);
            Assert.AreEqual(1, mockFactory.requestedMembers.Count);
            ValueAccessValidatorBuilder valueAccessValidatorBuilder = mockFactory.requestedMembers["TestClass.PublicMethod"];

            Assert.AreSame(valueAccessValidatorBuilder.BuiltValidator, validator);
            Assert.AreEqual(2, valueAccessValidatorBuilder.ValueValidators.Count);
            Assert.AreEqual("validator 1 message", ((MockValidator <object>)valueAccessValidatorBuilder.ValueValidators[0]).MessageTemplate);
            Assert.AreEqual("validator 2 message", ((MockValidator <object>)valueAccessValidatorBuilder.ValueValidators[1]).MessageTemplate);
        }
Beispiel #16
0
        public void FlyweightUpdatedWithValidatedMethodReferenceReturnsCorrectValues()
        {
            ValidatedMethodReference methodReference = new ValidatedMethodReference("Method");

            methodReference.Validators.Add(new MockValidatorData("validator1", false));
            methodReference.Validators.Get("validator1").MessageTemplate = "method validator 1 message";
            methodReference.Validators.Add(new MockValidatorData("validator2", false));
            methodReference.Validators.Get("validator2").MessageTemplate = "method validator 2 message";
            methodReference.Validators.Add(new MockValidatorData("validator3", false));
            methodReference.Validators.Get("validator3").MessageTemplate = "method validator 3 message";
            methodReference.Validators.Add(new MockValidatorData("validator4", false));
            methodReference.Validators.Get("validator4").MessageTemplate = "method validator 4 message";

            ConfigurationValidatedElement validatedElement = new ConfigurationValidatedElement();
            MethodInfo methodInfo = typeof(ConfigurationValidatedElementFixtureTestClass).GetMethod("Method");

            validatedElement.UpdateFlyweight(methodReference, methodInfo);

            Assert.AreSame(typeof(DateTime), ((IValidatedElement)validatedElement).TargetType);
            Assert.AreSame(methodInfo, ((IValidatedElement)validatedElement).MemberInfo);
            Assert.AreEqual(CompositionType.And, ((IValidatedElement)validatedElement).CompositionType);
            Assert.AreEqual(false, ((IValidatedElement)validatedElement).IgnoreNulls);

            IEnumerator <IValidatorDescriptor> validatorDescriptorsEnumerator
                = ((IValidatedElement)validatedElement).GetValidatorDescriptors().GetEnumerator();

            Assert.IsNotNull(validatorDescriptorsEnumerator);
            Assert.IsTrue(validatorDescriptorsEnumerator.MoveNext());
            Assert.AreEqual("method validator 1 message",
                            ((MockValidatorData)validatorDescriptorsEnumerator.Current).MessageTemplate);
            Assert.IsTrue(validatorDescriptorsEnumerator.MoveNext());
            Assert.AreEqual("method validator 2 message",
                            ((MockValidatorData)validatorDescriptorsEnumerator.Current).MessageTemplate);
            Assert.IsTrue(validatorDescriptorsEnumerator.MoveNext());
            Assert.AreEqual("method validator 3 message",
                            ((MockValidatorData)validatorDescriptorsEnumerator.Current).MessageTemplate);
            Assert.IsTrue(validatorDescriptorsEnumerator.MoveNext());
            Assert.AreEqual("method validator 4 message",
                            ((MockValidatorData)validatorDescriptorsEnumerator.Current).MessageTemplate);
            Assert.IsFalse(validatorDescriptorsEnumerator.MoveNext());
        }
Beispiel #17
0
        public void CreateValidatorForDefaultPropertyForExistingTypeInConfigurationRetunsAppropriateValidatorBasedOnRule()
        {
            ValidationSettings settings = new ValidationSettings();

            configurationSource.Add(ValidationSettings.SectionName, settings);
            ValidatedTypeReference typeReference = new ValidatedTypeReference(typeof(TestClass));

            settings.Types.Add(typeReference);
            typeReference.DefaultRuleset = "ruleset1";
            ValidationRulesetData ruleData = new ValidationRulesetData("ruleset1");

            typeReference.Rulesets.Add(ruleData);
            ValidatedMethodReference methodReference1 = new ValidatedMethodReference("PublicMethod");

            ruleData.Methods.Add(methodReference1);
            ValidatedMethodReference methodReference2 = new ValidatedMethodReference("NonPublicMethod");

            ruleData.Methods.Add(methodReference2);
            methodReference1.Validators.Add(new MockValidatorData("validator1", false));
            methodReference1.Validators.Get("validator1").MessageTemplate = "validator 1 message";
            methodReference2.Validators.Add(new MockValidatorData("validator2", false));
            methodReference2.Validators.Get("validator2").MessageTemplate = "validator 2 message";

            // Note: Use a local builder here since the assumption was made about how and when the
            //       the builder uses the configuration source....
            var localBuilder =
                ConfigurationValidatorBuilder.FromConfiguration(
                    configurationSource,
                    mockFactory,
                    ValidationFactory.DefaultCompositeValidatorFactory);
            Validator validator = localBuilder.CreateValidator(typeof(TestClass), string.Empty);

            Assert.IsNotNull(validator);
            Assert.AreSame(typeof(ValueAccessValidator), validator.GetType());
            ValueAccessValidatorBuilder valueAccessValidatorBuilder1 = mockFactory.requestedMembers["TestClass.PublicMethod"];

            Assert.AreSame(valueAccessValidatorBuilder1.BuiltValidator, validator);
            Assert.AreEqual("validator 1 message", ((MockValidator <object>)valueAccessValidatorBuilder1.ValueValidators[0]).MessageTemplate);
        }
Beispiel #18
0
        public void CreateValidatorForRuleWithInvalidMethodReferenceIgnoresInvalidMethod()
        {
            ValidationRulesetData    ruleData         = new ValidationRulesetData();
            ValidatedMethodReference methodReference1 = new ValidatedMethodReference("PublicMethod");

            ruleData.Methods.Add(methodReference1);
            ValidatedMethodReference methodReference2 = new ValidatedMethodReference("NonPublicMethod");

            ruleData.Methods.Add(methodReference2);
            methodReference1.Validators.Add(new MockValidatorData("validator1", false));
            methodReference1.Validators.Get("validator1").MessageTemplate = "validator 1 message";
            methodReference2.Validators.Add(new MockValidatorData("validator2", false));
            methodReference2.Validators.Get("validator2").MessageTemplate = "validator 2 message";

            Validator validator = builder.CreateValidatorForRule(typeof(TestClass), ruleData);

            Assert.IsNotNull(validator);
            Assert.AreSame(typeof(ValueAccessValidator), validator.GetType());
            ValueAccessValidatorBuilder valueAccessValidatorBuilder1 = mockFactory.requestedMembers["TestClass.PublicMethod"];

            Assert.AreSame(valueAccessValidatorBuilder1.BuiltValidator, validator);
            Assert.AreEqual("validator 1 message", ((MockValidator <object>)valueAccessValidatorBuilder1.ValueValidators[0]).MessageTemplate);
        }
Beispiel #19
0
        public void CreateValidatorForDefaultPropertyForExistingTypeInConfigurationRetunsAppropriateValidatorBasedOnRule()
        {
            ValidationSettings settings = new ValidationSettings();

            this.configurationSource.Add(ValidationSettings.SectionName, settings);
            ValidatedTypeReference typeReference = new ValidatedTypeReference(typeof(TestClass));

            settings.Types.Add(typeReference);
            typeReference.DefaultRuleset = "ruleset1";
            ValidationRulesetData ruleData = new ValidationRulesetData("ruleset1");

            typeReference.Rulesets.Add(ruleData);
            ValidatedMethodReference methodReference1 = new ValidatedMethodReference("PublicMethod");

            ruleData.Methods.Add(methodReference1);
            ValidatedMethodReference methodReference2 = new ValidatedMethodReference("NonPublicMethod");

            ruleData.Methods.Add(methodReference2);
            methodReference1.Validators.Add(new MockValidatorData("validator1", false));
            methodReference1.Validators.Get("validator1").MessageTemplate = "validator 1 message";
            methodReference2.Validators.Add(new MockValidatorData("validator2", false));
            methodReference2.Validators.Get("validator2").MessageTemplate = "validator 2 message";

            Validator validator = this.builder.CreateValidator(typeof(TestClass), string.Empty);

            Assert.IsNotNull(validator);
            Assert.AreSame(typeof(AndCompositeValidator), validator.GetType());
            IList <Validator> validators = ValidationTestHelper.CreateListFromEnumerable(((AndCompositeValidator)validator).Validators);

            Assert.AreEqual(1, validators.Count);
            Assert.AreEqual(1, this.mockFactory.requestedMembers.Count);
            ValueAccessValidatorBuilder valueAccessValidatorBuilder1 = this.mockFactory.requestedMembers["TestClass.PublicMethod"];

            Assert.AreSame(valueAccessValidatorBuilder1.BuiltValidator, validators[0]);
            Assert.AreEqual(1, valueAccessValidatorBuilder1.ValueValidators.Count);
            Assert.AreEqual("validator 1 message", ((MockValidator <object>)valueAccessValidatorBuilder1.ValueValidators[0]).MessageTemplate);
        }
Beispiel #20
0
 /// <summary>
 /// Creates an instance of <see cref="MethodNode"/> based on runtime configuration data.
 /// </summary>
 /// <param name="methodData">The corresponding runtime configuration data.</param>
 public MethodNode(ValidatedMethodReference methodData)
     : this(methodData.Name)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ConfigurationValidatedElement"/> class for a method.
 /// </summary>
 /// <param name="validatedMethodReference">The method reference configuration object.</param>
 /// <param name="methodInfo">The method.</param>
 public ConfigurationValidatedElement(ValidatedMethodReference validatedMethodReference, MethodInfo methodInfo)
 {
     UpdateFlyweight(validatedMethodReference, methodInfo);
 }
        private void BuildMethodReferences(ValidationRulesetData validationRule, RuleSetNode ruleNode)
        {
            foreach (MethodNode methodNode in ruleNode.Hierarchy.FindNodesByType(ruleNode, typeof(MethodNode)))
            {
                ValidatedMethodReference methodReference = new ValidatedMethodReference();
                methodReference.Name = methodNode.Name;

                foreach (ValidatorData validator in FindValidators(methodNode))
                {
                    methodReference.Validators.Add(validator);
                }

                validationRule.Methods.Add(methodReference);
            }
        }
Beispiel #23
0
 /// <summary>
 /// Creates an instance of <see cref="MethodNode"/> based on runtime configuration data.
 /// </summary>
 /// <param name="methodData">The corresponding runtime configuration data.</param>
 public MethodNode(ValidatedMethodReference methodData)
     : this(methodData.Name)
 {
 }
Beispiel #24
0
 public void UpdateFlyweight(ValidatedMethodReference validatedMethodReference, MethodInfo methodInfo)
 {
     UpdateFlyweight(validatedMethodReference, methodInfo, methodInfo.ReturnType);
 }