Ejemplo n.º 1
0
        public void DtoRegexRulePatternAtAttributeScopeWithOneExclusion()
        {
            var dtoRules = new DTO.CustomizationRule()
            {
                RegexRules = new DTO.RegexRule[]
                {
                    new DTO.RegexRule()
                    {
                        pattern = @"^[A-Za-z]+_[A-Z]{1}[a-z]{1}[A-Za-z]*$",
                        scope   = DTO.RuleScope.Attribute,
                        Exclude = new string[] { "new_incorrect_Naming.my_field" }
                    }
                }
            };

            var rules = RuleRepository.GetRules(dtoRules);

            var rule = rules.Single() as RegexRule;

            Assert.Equal(@"^[A-Za-z]+_[A-Z]{1}[a-z]{1}[A-Za-z]*$",
                         rule.Pattern.ToString());
            Assert.Equal(RuleScope.Attribute, rule.Scope);

            var excluded = GetInstanceField(rule.GetType(),
                                            rule,
                                            "_excludedSchemaNames") as ICollection <string>;

            Assert.Single(excluded);
            Assert.Contains("new_incorrect_Naming.my_field", excluded);
        }
Ejemplo n.º 2
0
        public void DtoRegexRulePatternAtEntityScopeWithManyExclusions()
        {
            var dtoRules = new DTO.CustomizationRule()
            {
                RegexRules = new DTO.RegexRule[]
                {
                    new DTO.RegexRule()
                    {
                        pattern = @"^[A-Za-z]+_[A-Z]{1}[a-z]{1}[A-Za-z]*$",
                        scope   = DTO.RuleScope.Entity,
                        Exclude = new string[] {
                            "new_incorrect_Naming", "new_INcorrect", "not_SoGood"
                        }
                    }
                }
            };

            var rules = RuleRepository.GetRules(dtoRules);

            var rule = rules.Single() as RegexRule;

            Assert.Equal(@"^[A-Za-z]+_[A-Z]{1}[a-z]{1}[A-Za-z]*$",
                         rule.Pattern.ToString());
            Assert.Equal(RuleScope.Entity, rule.Scope);

            var excluded = GetInstanceField(rule.GetType(),
                                            rule,
                                            "_excludedSchemaNames") as ICollection <string>;

            Assert.Equal(3, excluded.Count);
            Assert.Contains("new_incorrect_Naming", excluded);
            Assert.Contains("new_INcorrect", excluded);
            Assert.Contains("not_SoGood", excluded);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Gets the customization rules persisted on given file location.
        /// </summary>
        /// <param name="rulesFileLocation">
        /// Location of the file containing rules.
        /// </param>
        /// <returns>
        /// List of rules from <paramref name="rulesFileLocation"/>.
        /// </returns>
        public List <CustomizationRuleBase> GetRules(string rulesFileLocation)
        {
            var serializer = new XmlSerializer(typeof(DTO.CustomizationRule));

            var filename = Environment.CurrentDirectory + "\\" + rulesFileLocation;

            DTO.CustomizationRule rules = null;

            using (var stream = new FileStream(filename,
                                               FileMode.Open,
                                               FileAccess.Read)) {
                rules = serializer.Deserialize(stream) as DTO.CustomizationRule;
            }

            return(GetRules(rules));
        }
Ejemplo n.º 4
0
        public void DtoDisallowSolutionToOwnManagedEntitiesRuleImplicitFalse()
        {
            var dtoRules = new DTO.CustomizationRule()
            {
                DisallowSolutionToOwnManagedEntitiesRule = new DTO.DisallowSolutionToOwnManagedEntitiesRule()
            };

            var rules = RuleRepository.GetRules(dtoRules);

            var rule = rules.Single() as DisallowSolutionToOwnManagedEntitiesRule;

            bool allowed = (bool)GetInstanceField(rule.GetType(),
                                                  rule,
                                                  "_allowSolutionToOwnManagedEntities");

            Assert.False(allowed);
        }
Ejemplo n.º 5
0
        public void DtoAttributePrefixRuleIllegalValues(string prefix)
        {
            var dtoRules = new DTO.CustomizationRule()
            {
                AttributePrefixRule = new DTO.AttributePrefixRule()
                {
                    schemaPrefix = prefix
                }
            };

            var ex = Assert.Throws <ArgumentException>(
                () => RuleRepository.GetRules(dtoRules));

            Assert.StartsWith("Schema prefix isn't allowed to be null, empty or whitespace.",
                              ex.Message);
            Assert.Equal("schemaPrefix", ex.ParamName);
        }
Ejemplo n.º 6
0
        public void DtoEntityPrefixRuleSet()
        {
            var dtoRules = new DTO.CustomizationRule()
            {
                EntityPrefixRule = new DTO.EntityPrefixRule()
                {
                    schemaPrefix = "sar"
                }
            };

            var rules = RuleRepository.GetRules(dtoRules);

            var rule = rules.Single() as EntityPrefixRule;

            string prefix = GetInstanceField(rule.GetType(),
                                             rule,
                                             "_schemaPrefix") as string;

            Assert.Equal("sar", prefix);
        }
Ejemplo n.º 7
0
        public void DtoRegexRulePatternAtAttributeScope()
        {
            var dtoRules = new DTO.CustomizationRule()
            {
                RegexRules = new DTO.RegexRule[]
                {
                    new DTO.RegexRule()
                    {
                        pattern = @"^[A-Za-z]+_[A-Z]{1}[a-z]{1}[A-Za-z]*$",
                        scope   = DTO.RuleScope.Attribute
                    }
                }
            };

            var rules = RuleRepository.GetRules(dtoRules);

            var rule = rules.Single() as RegexRule;

            Assert.Equal(@"^[A-Za-z]+_[A-Z]{1}[a-z]{1}[A-Za-z]*$",
                         rule.Pattern.ToString());
            Assert.Equal(RuleScope.Attribute, rule.Scope);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Get rules from deserialized rules object.
        /// This is internal so we can get unit tests to run nicely.
        /// </summary>
        /// <param name="rules">
        /// Deserialized rules object.
        /// </param>
        /// <returns>
        /// List of rules from <paramref name="rules"/>.
        /// </returns>
        internal static List <CustomizationRuleBase> GetRules(
            DTO.CustomizationRule rules)
        {
            if (rules is null)
            {
                throw new ArgumentNullException(nameof(rules));
            }

            var retval = new List <CustomizationRuleBase>();

            var ruleFactory = new RuleFactory();

            if (rules.DisallowSolutionToOwnManagedEntitiesRule != null)
            {
                var rule = ruleFactory.CreateFrom(rules.DisallowSolutionToOwnManagedEntitiesRule);
                retval.Add(rule);
            }
            if (rules.EntityPrefixRule != null)
            {
                var rule = ruleFactory.CreateFrom(rules.EntityPrefixRule);
                retval.Add(rule);
            }
            if (rules.AttributePrefixRule != null)
            {
                var rule = ruleFactory.CreateFrom(rules.AttributePrefixRule);
                retval.Add(rule);
            }
            if (rules.RegexRules != null)
            {
                foreach (var dtoRule in rules.RegexRules)
                {
                    var rule = ruleFactory.CreateFrom(dtoRule);
                    retval.Add(rule);
                }
            }

            return(retval);
        }