예제 #1
0
        /// <summary>
        /// Gets the validated value.
        /// </summary>
        /// <param name="basis">A validated-value basis.</param>
        /// <returns>A validated value.</returns>
        public ValidatedValue GetValidatedValue(ValidatedValueBasis basis)
        {
            var valueIdentity = GetIdentity(basis);

            var value = new ValidatedValue
            {
                ManifestValue       = basis.ManifestValue,
                ValueResponse       = basis.ValidatedValueResponse,
                ValueIdentity       = valueIdentity,
                ParentValue         = basis.Parent,
                CollectionItemOrder = basis.CollectionOrder,
            };

            value.Rules = basis.GetManifestRules()
                          .Select(manifestRule => new ExecutableRule
            {
                ValidatedValue = value,
                ManifestRule   = manifestRule,
                RuleLogic      = validationLogicFactory.GetValidationLogic(manifestRule),
                RuleIdentifier = new RuleIdentifier(manifestRule, valueIdentity),
            })
                          .ToList();

            return(value);
        }
        public void GetManifestRulesShouldCombineApplicablePolymorphicRulesWithManifestValue([ManifestModel] ManifestValue value,
                                                                                             [ManifestModel] ManifestPolymorphicType type1,
                                                                                             [ManifestModel] ManifestPolymorphicType type2,
                                                                                             [ManifestModel] ManifestPolymorphicType type3,
                                                                                             [ManifestModel] ManifestRule rule1,
                                                                                             [ManifestModel] ManifestRule rule2,
                                                                                             [ManifestModel] ManifestRule rule3,
                                                                                             [ManifestModel] ManifestRule rule4)
        {
            value.ValidatedType = typeof(Person);
            type1.ValidatedType = typeof(Employee);
            type2.ValidatedType = typeof(Manager);
            type3.ValidatedType = typeof(Cleaner);
            value.Rules = new[] { rule1 };
            type1.Rules = new[] { rule2 };
            type2.Rules = new[] { rule3 };
            type3.Rules = new[] { rule4 };
            value.PolymorphicTypes = new[] { type1, type2, type3 };
            var response = new SuccessfulGetValueToBeValidatedResponse(new Manager());
            var sut = new ValidatedValueBasis(value, response, null);

            Assert.That(() => sut.GetManifestRules(), Is.EquivalentTo(new[] { rule1, rule2, rule3 }));
        }