コード例 #1
0
 public string GetMessageTemplate(MessageContext context)
 {
     //Use Name of the Rule Validator as the Key to get the error message format string
     //RuleValidator types have Generics which return Type Name as LengthValidator`1 and we need to remove that
     string key = context.ValidatorType.Name.Split('`').FirstOrDefault();
     return GetMessageTemplate(key);
 }
コード例 #2
0
        public static ValidationResult Create(RuleValidator validator, RuleValidatorContext context, IList<Object> parameterValues, object messageKey, IEnumerable<ValidationResult> nestedValidationResults = null)
        {
            string message = string.Empty;
            var messageService = new MessageService();

            if (String.IsNullOrEmpty(validator.Message))
            {
                var messageContext = new MessageContext(context, validator.GetType(), validator.Negate, validator.MessageStoreName, messageKey, validator.MessageFormatter);
                message = messageService.GetDefaultMessageAndFormat(messageContext, parameterValues);
            }
            else
            {
                //Since the message was supplied, don't get the default message from the store, just format it
                message = messageService.FormatMessage(validator.Message, context, parameterValues, validator.MessageFormatter);
            }

            //Override level if all the nested validation errors are Warnings

            if (nestedValidationResults != null && nestedValidationResults.All(vr => vr.Level == ValidationLevelType.Warn))
            {
                return new ValidationResult(context.PropertyInfo, message, ValidationLevelType.Warn, context.PropertyValue, nestedValidationResults);
            }
            else
            {
                return new ValidationResult(context.PropertyInfo, message, context.Level, context.PropertyValue, nestedValidationResults);
            }

            //return new ValidationResult(context.PropertyInfo, message, context.Level, context.PropertyValue, nestedValidationResults);
        }
コード例 #3
0
        public static ValidationResult Create(RuleValidator validator, RuleValidatorContext context, IList<Object> parameterValues, object messageKey)
        {
            string message = string.Empty;
            var messageService = new MessageService();

            if (String.IsNullOrEmpty(validator.Message))
            {
                var messageContext = new MessageContext(context, validator.GetType(), validator.Negate, validator.MessageStoreName, messageKey, validator.MessageFormatter);
                message = messageService.GetDefaultMessageAndFormat(messageContext, parameterValues);
            }
            else
            {
                //Since the message was supplied, don't get the default message from the store, just format it
                message = messageService.FormatMessage(validator.Message, context, parameterValues, validator.MessageFormatter);
            }

            return new ValidationResult(context.PropertyInfo, message, context.Level, context.PropertyValue);
        }
コード例 #4
0
        public string BuildRuleKeyFromContext(MessageContext context)
        {
            //Use Name of the Rule Validator as the Key to get the error message format string
            //RuleValidator types have Generics which return Type Name as LengthValidator`1 and we need to remove that
            string key = context.ValidatorType.Name.Split('`').FirstOrDefault();

            // Remove "Nullable" from end of type name
            if (key.EndsWith("Nullable"))
            {
                key = key.Remove(key.Length - 8);
            }

            // Prefix key with "Not_" for negated rule messages
            if (context.Negate)
            {
                key = "Not_" + key;
            }

            return key;
        }
コード例 #5
0
        public string GetMessageTemplate(MessageContext context)
        {
            var ruleKey = BuildRuleKeyFromContext(context);

            IMessageStore messageStore;

            if (!String.IsNullOrEmpty(context.MessageStoreName))
            {
                //Explicit request for this Message Store
                messageStore = MessageStoreFactory.GetMessageStore(context.MessageStoreName);
            }
            else
            {
                //Message Store not defined. Look for overrides first, then fall back to default if not found
                //Select the last message store found
                messageStore = MessageStoreFactory.GetAllMessageStores().ToList().Last(
                    x => x.IsMessageInStore(ruleKey));
            }

            var messageTemplate = messageStore.GetMessageTemplate(ruleKey);
            return messageTemplate;
        }
コード例 #6
0
        public void GetFormattedErrorMessage_ReturnsFormattedString()
        {
            //Create an Entity
            var emptyContact = new Contact();
            emptyContact.FirstName = null;
            emptyContact.LastName = null;

            //Create PropertyValidator
            var propertyValidator =
                new PropertyValidator<Contact, string>(contact => contact.LastName);

            //Create a rule
            RuleValidator<Contact, string> ruleValidator = new LengthBetween<Contact>(1, 5);

            //Create a context
            var context = new RuleValidatorContext<Contact, string>(emptyContact, propertyValidator, null);

            //create it like this? IOC? Factory?
            //IMessageStore messageStore = new ResourceMessageStore();

            //string errorMessage = messageStore.GetFormattedDefaultMessage(ruleValidator.GetType().Name, context, ruleValidator.Parameters);
            var messageService = new MessageService();

            var messageContext = new MessageContext(context, ruleValidator.GetType(), false, null, null);
            var paramValues =
                (from ruleParameter in ruleValidator.Params select (object) ruleParameter.GetParamValue())
                    .ToList();
            var errorMessage = messageService.GetDefaultMessageAndFormat(messageContext, paramValues);

            Assert.That(errorMessage, Is.Not.Null.Or.Empty);

            Assert.That(errorMessage, Is.StringContaining("Last Name"));
            Assert.That(errorMessage, Is.StringContaining("1"));
            Assert.That(errorMessage, Is.StringContaining("5"));
            //null: Search for Actual value but it's empty b/c the value is null
        }
コード例 #7
0
        public string GetDefaultMessageAndFormat(MessageContext context, object[] parameters)
        {
            string messageTemplate = GetMessageTemplate(context);

            return FormatMessage(messageTemplate, context.RuleContext, parameters, context.PropertyValueFormatter);
        }