protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var dictionary = value as IDictionary;

            if (dictionary == null)
            {
                return(ValidationResult.Success);
            }

            var compositeResults = new CompositeValidationResult($"Validation of '{validationContext.DisplayName}' failed.");

            foreach (DictionaryEntry entry in dictionary)
            {
                var enumerable = (entry.Value as IList);

                if (enumerable == null)
                {
                    throw new Exception($"Unable to unwrap the extension object.");
                }

                var context = new ValidationContext(enumerable, null)
                {
                    DisplayName = GetAggregateExtensionDisplayName((string)entry.Key)
                };

                var enumerableValidationResult = _validateEnumerable.GetValidationResult(enumerable, context);

                if (enumerableValidationResult == ValidationResult.Success)
                {
                    continue;
                }

                compositeResults.AddResult(
                    enumerableValidationResult is CompositeValidationResult
                        ? enumerableValidationResult
                        : new ValidationResult($"{context.DisplayName} ({entry.Key}): {enumerableValidationResult}"));
            }

            return(compositeResults.Results.Any()
                ? compositeResults
                : ValidationResult.Success);

            string GetAggregateExtensionDisplayName(string extensionBagName)
            {
                var bagNameParts = SystemConventions.GetExtensionBagNameParts(extensionBagName);

                return($"{bagNameParts.PluralName} ({bagNameParts.SchemaProperCaseName})");
            }
        }
Esempio n. 2
0
 protected override void Act()
 {
     _actualBagNameParts = SystemConventions.GetExtensionBagNameParts(_suppliedExtensionBagName);
 }
Esempio n. 3
0
 protected override void Act()
 {
     var actualBagNameParts = SystemConventions.GetExtensionBagNameParts("Too_Many_Underscores");
 }
Esempio n. 4
0
 protected override void Act()
 {
     var actualBagNameParts = SystemConventions.GetExtensionBagNameParts("NoUnderscoreSeparator");
 }
Esempio n. 5
0
 public SchemaValidator(DomainModel domainModel)
 {
     RuleFor(schema => schema.PhysicalName)
     .Must(name => !SystemConventions.IsAuthSchema(name))
     .WithMessage($"Schema '{SystemConventions.AuthSchema}' is reserved for system use.");
 }
Esempio n. 6
0
        private static string GetAggregateExtensionDisplayName(string extensionBagName)
        {
            var bagNameParts = SystemConventions.GetExtensionBagNameParts(extensionBagName);

            return($"{bagNameParts.PluralName} ({bagNameParts.SchemaProperCaseName})");
        }