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 errorMessage = messageService.GetDefaultMessageAndFormat(new MessageContext(context, ruleValidator.GetType(), false, null, null), ruleValidator.Parameters); 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 }
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); }
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); }
public void FormatMessage_IsValid(string message, string propertyValue, string parm1, string parm2, string expectedResult) { var context = BuildContext(propertyValue); string result = new MessageService().FormatMessage(message, context, new object[] {parm1, parm2}); Assert.That(result,Is.EqualTo(expectedResult)); }