Exemplo n.º 1
0
        public void GetManifestRuleShouldReturnAManifestRuleWithCorrectDependencies([Frozen] IGetsManifestRuleIdentifierFromRelativeIdentifier relativeToManifestIdentityConverter,
                                                                                    [Frozen] IGetsManifestRuleIdentifier identifierFactory,
                                                                                    [Frozen, ManifestModel] ValidatorBuilderContext context,
                                                                                    RuleBuilder <SampleRule> sut,
                                                                                    [ManifestModel] ManifestRuleIdentifier identifier,
                                                                                    RelativeRuleIdentifier relativeId1,
                                                                                    RelativeRuleIdentifier relativeId2,
                                                                                    RelativeRuleIdentifier relativeId3,
                                                                                    [ManifestModel] ManifestRuleIdentifier manifestId1,
                                                                                    [ManifestModel] ManifestRuleIdentifier manifestId2,
                                                                                    [ManifestModel] ManifestRuleIdentifier manifestId3)
        {
            Mock.Get(identifierFactory)
            .Setup(x => x.GetManifestRuleIdentifier(typeof(SampleRule), It.IsAny <ValidatorBuilderContext>(), It.IsAny <string>()))
            .Returns(identifier);
            Mock.Get(relativeToManifestIdentityConverter).Setup(x => x.GetManifestRuleIdentifier(context.ManifestValue, relativeId1)).Returns(manifestId1);
            Mock.Get(relativeToManifestIdentityConverter).Setup(x => x.GetManifestRuleIdentifier(context.ManifestValue, relativeId2)).Returns(manifestId2);
            Mock.Get(relativeToManifestIdentityConverter).Setup(x => x.GetManifestRuleIdentifier(context.ManifestValue, relativeId3)).Returns(manifestId3);

            sut.Dependencies = new[] { relativeId1, relativeId2, relativeId3 };

            var result = sut.GetManifestValue().Rules.Single();

            Assert.That(result, Has.Property(nameof(ManifestRule.DependencyRules)).EquivalentTo(new[] { manifestId1, manifestId2, manifestId3 }));
        }
Exemplo n.º 2
0
        public void GetRuleBuilderShouldReturnBuilder(IGetsManifestRuleIdentifierFromRelativeIdentifier identifierConverter,
                                                      IGetsManifestRuleIdentifier identifierFactory,
                                                      [ManifestModel] ValidatorBuilderContext context)
        {
            var sut = new RuleBuilderFactory(() => identifierConverter, () => identifierFactory);

            Assert.That(() => sut.GetRuleBuilder <ObjectRule>(context, c => { }), Is.Not.Null);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initialises an instance of <see cref="ModelRuleToManifestRuleConverter"/>.
 /// </summary>
 /// <param name="configProvider">A rule-configuration provider.</param>
 /// <param name="ruleTypeResolver">A rule-type resolver.</param>
 /// <param name="relativeToManifestIdentifierConverter">A converter which turns relative identifiers into manifest identifiers.</param>
 public ModelRuleToManifestRuleConverter(IGetsRuleConfiguration configProvider,
                                         IResolvesRuleType ruleTypeResolver,
                                         IGetsManifestRuleIdentifierFromRelativeIdentifier relativeToManifestIdentifierConverter)
 {
     this.configProvider   = configProvider ?? throw new ArgumentNullException(nameof(configProvider));
     this.ruleTypeResolver = ruleTypeResolver ?? throw new ArgumentNullException(nameof(ruleTypeResolver));
     this.relativeToManifestIdentifierConverter = relativeToManifestIdentifierConverter ?? throw new ArgumentNullException(nameof(relativeToManifestIdentifierConverter));
 }
Exemplo n.º 4
0
        public void GetRuleBuilderShouldExecuteConfigurationUponBuilder(IGetsManifestRuleIdentifierFromRelativeIdentifier identifierConverter,
                                                                        IGetsManifestRuleIdentifier identifierFactory,
                                                                        [ManifestModel] ValidatorBuilderContext context,
                                                                        string name)
        {
            var sut    = new RuleBuilderFactory(() => identifierConverter, () => identifierFactory);
            var result = sut.GetRuleBuilder <ObjectRule>(context, c => c.Name = name);

            Assert.That(result.Name, Is.EqualTo(name));
        }
Exemplo n.º 5
0
        public void ConvertAllRulesAndAddToManifestValuesShouldSuccessfullyConvertTheRuleDependencies([Frozen] IGetsRuleConfiguration configProvider,
                                                                                                      [Frozen] IResolvesRuleType ruleTypeResolver,
                                                                                                      [Frozen] IGetsManifestRuleIdentifierFromRelativeIdentifier relativeToManifestIdentifierConverter,
                                                                                                      ModelRuleToManifestRuleConverter sut,
                                                                                                      [ManifestModel] ModelAndManifestValuePair modelAndValue,
                                                                                                      [ManifestModel] Rule rule,
                                                                                                      Type ruleType,
                                                                                                      Action <object> ruleConfig,
                                                                                                      RelativeIdentifier dependency1,
                                                                                                      RelativeIdentifier dependency2,
                                                                                                      Type dependencyType1,
                                                                                                      Type dependencyType2,
                                                                                                      ManifestRuleIdentifier dependencyId1,
                                                                                                      ManifestRuleIdentifier dependencyId2)
        {
            modelAndValue.ModelValue.Rules.Add(rule);
            Mock.Get(ruleTypeResolver).Setup(x => x.GetRuleType(rule.RuleTypeName)).Returns(ruleType);
            Mock.Get(configProvider).Setup(x => x.GetRuleConfigurationAction(ruleType, rule.RulePropertyValues)).Returns(ruleConfig);
            rule.Dependencies.Add(dependency1);
            rule.Dependencies.Add(dependency2);
            Mock.Get(ruleTypeResolver).Setup(x => x.GetRuleType(dependency1.RuleTypeName)).Returns(dependencyType1);
            Mock.Get(ruleTypeResolver).Setup(x => x.GetRuleType(dependency2.RuleTypeName)).Returns(dependencyType2);
            Mock.Get(relativeToManifestIdentifierConverter)
            .Setup(x => x.GetManifestRuleIdentifier(modelAndValue.ManifestValue,
                                                    It.Is <RelativeRuleIdentifier>(r => r.RuleType == dependencyType1 &&
                                                                                   r.RuleName == dependency1.RuleName &&
                                                                                   r.MemberName == dependency1.MemberName &&
                                                                                   r.AncestorLevels == dependency1.AncestorLevels)))
            .Returns(dependencyId1);
            Mock.Get(relativeToManifestIdentifierConverter)
            .Setup(x => x.GetManifestRuleIdentifier(modelAndValue.ManifestValue,
                                                    It.Is <RelativeRuleIdentifier>(r => r.RuleType == dependencyType2 &&
                                                                                   r.RuleName == dependency2.RuleName &&
                                                                                   r.MemberName == dependency2.MemberName &&
                                                                                   r.AncestorLevels == dependency2.AncestorLevels)))
            .Returns(dependencyId2);


            sut.ConvertAllRulesAndAddToManifestValues(new[] { modelAndValue });

            Assert.That(modelAndValue.ManifestValue.Rules.Single().DependencyRules, Is.EquivalentTo(new[] { dependencyId1, dependencyId2 }));
        }