public void ValidationTypeProperty() { // Arrange ModelClientValidationRule rule = new ModelClientValidationRule(); // Act & assert MemberHelper.TestStringProperty(rule, "ValidationType", "", false /* testDefaultValue */); }
public void ValidationTypeProperty() { // Arrange ModelClientValidationRule rule = new ModelClientValidationRule(); // Act & assert MemberHelper.TestStringProperty(rule, "ValidationType", String.Empty); }
public void ValidationParametersProperty() { // Arrange ModelClientValidationRule rule = new ModelClientValidationRule(); // Act IDictionary<string, object> parameters = rule.ValidationParameters; // Assert Assert.IsNotNull(parameters); Assert.AreEqual(0, parameters.Count); }
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { ErrorMessage = GetErrorMessage(metadata.ContainerType, metadata.GetDisplayName()), ValidationType = "later", }; rule.ValidationParameters.Add("other", "*." + _otherDateProperty); yield return rule; }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule() { ErrorMessage = Resources.InvalidEmail, ValidationType = "email" }; rule.ValidationParameters.Add("pattern", Resources.EmailValidatorRegEx); return(new List <ModelClientValidationRule>() { rule }); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule() { ErrorMessage = (this.ErrorMessage ?? "Required"), ValidationType = (this.ClientValidationType ?? "requiredifchecked"), }; string depProp = BuildDependentPropertyId(metadata, context as ViewContext); rule.ValidationParameters.Add("dependentproperty", depProp); yield return(rule); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule() { ErrorMessage = this.FormatErrorMessage(valueToCompare.ToString()), ValidationType = "regexbyradiobutton" }; rule.ValidationParameters.Add("radiobuttongroupname", fieldName); rule.ValidationParameters.Add("valuetocompare", valueToCompare); rule.ValidationParameters.Add("regex", pattern); yield return(rule); }
/// <summary> /// 設定前端的 html attribute, 供 jQuery validation 辨認 /// </summary> /// <param name="metadata"></param> /// <param name="context"></param> /// <returns></returns> public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { // 此 2 property 必填 ErrorMessage = ErrorMessage, // ValidationType 必須唯一 ValidationType = "atleastonerequired" }; rule.ValidationParameters["myparams"] = string.Join(",", _properties); yield return(rule); }
// For the client side validation: public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { ValidationType = "birthdate", // This is the name jQuery adapter will use! ErrorMessage = ErrorMessage // This is the error message the client shows! }; // The parameters the client side validation uses: rule.ValidationParameters["minage"] = MinAge; rule.ValidationParameters["maxage"] = MaxAge; yield return(rule); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var errorMessage = DependencyResolver.Current.GetService <ILocalizationService>() .GetResource("FieldMaxLength").FormatWith("", Length); ModelClientValidationRule mvr = new ModelClientValidationRule { ErrorMessage = errorMessage, ValidationType = "maxlength" }; mvr.ValidationParameters.Add("maxallowedlength", Length); return(new[] { mvr }); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var regra = new ModelClientValidationRule { ErrorMessage = _mensagemErro, ValidationType = "regraidademinima" }; regra.ValidationParameters.Add("valoridademinima", _idadeMinima); return(new List <ModelClientValidationRule> { regra }); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules( ModelMetadata metadata, ControllerContext context) { ModelClientValidationRule rule = new ModelClientValidationRule(); rule.ValidationType = "alphabetsOnly"; rule.ErrorMessage = "Only alphabets allowed"; //rule.ValidationParameters.Add //("param", DateTime.Now.ToString("dd-MM-yyyy")); return(new List <ModelClientValidationRule> { rule }); }
GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { ErrorMessage = this.ErrorMessageString, ValidationType = "isdateafter" }; rule.ValidationParameters["propertytested"] = this.testedPropertyName; rule.ValidationParameters["allowequaldates"] = this.allowEqualDates; yield return(rule); }
public void GetClientValidationRulesShouldReturnIClientValidatableGetClientValidationRulesWhenValidatorImplementsIClientValidatable() { ControllerContext controllerContext = new ControllerContext { HttpContext = Substitute.For <HttpContextBase>() }; ModelMetadata propertyMetaData = GetModelMetaData(typeof(TestModel)); LaboModelValidator laboModelValidator = new LaboModelValidator(propertyMetaData, controllerContext, new TestModelValidator()); ModelClientValidationRule clientValidationRule = laboModelValidator.GetClientValidationRules().First(); Assert.AreEqual("TestModel validation invalid", clientValidationRule.ErrorMessage); Assert.AreEqual("testmodel", clientValidationRule.ValidationType); }
// IEnumerable<ModelClientValidationRule> 検証情報のリスト public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { // 検証ルールを準備 var rule = new ModelClientValidationRule { // 検証名 ValidationType = "string", ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()) }; // 検証パラメーター rule.ValidationParameters["length"] = length; yield return(rule); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules( ModelMetadata metadata, ControllerContext context) { var modelClientValidationRule = new ModelClientValidationRule { ValidationType = "cnpj", ErrorMessage = this.FormatErrorMessage(metadata.DisplayName) }; return(new List <ModelClientValidationRule> { modelClientValidationRule }); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { ValidationType = "rangeday", ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()) }; //傳至前端的html attribute, will be data-val-rangeday-min="xxx" rule.ValidationParameters["min"] = minimumDays; rule.ValidationParameters["max"] = maximumDays; yield return(rule); }
public void ValidationMessageForWithClientValidation_Unobtrusive() { var originalProviders = ModelValidatorProviders.Providers.ToArray(); ModelValidatorProviders.Providers.Clear(); try { // Arrange HtmlHelper <ValidationModel> htmlHelper = MvcHelper.GetHtmlHelper(GetViewDataWithModelErrors()); FormContext formContext = new FormContext(); htmlHelper.ViewContext.ClientValidationEnabled = true; htmlHelper.ViewContext.UnobtrusiveJavaScriptEnabled = true; htmlHelper.ViewContext.FormContext = formContext; ModelClientValidationRule[] expectedValidationRules = new ModelClientValidationRule[] { new ModelClientValidationRule() { ValidationType = "ValidationRule1" }, new ModelClientValidationRule() { ValidationType = "ValidationRule2" } }; Mock <ModelValidator> mockValidator = new Mock <ModelValidator>(ModelMetadata.FromStringExpression("", htmlHelper.ViewContext.ViewData), htmlHelper.ViewContext); mockValidator.Setup(v => v.GetClientValidationRules()) .Returns(expectedValidationRules); Mock <ModelValidatorProvider> mockValidatorProvider = new Mock <ModelValidatorProvider>(); mockValidatorProvider.Setup(vp => vp.GetValidators(It.IsAny <ModelMetadata>(), It.IsAny <ControllerContext>())) .Returns(new[] { mockValidator.Object }); ModelValidatorProviders.Providers.Add(mockValidatorProvider.Object); // Act MvcHtmlString html = htmlHelper.ValidationMessageFor(m => m.baz); // Assert Assert.Equal("<span class=\"field-validation-valid\" data-valmsg-for=\"baz\" data-valmsg-replace=\"true\"></span>", html.ToHtmlString()); } finally { ModelValidatorProviders.Providers.Clear(); foreach (var provider in originalProviders) { ModelValidatorProviders.Providers.Add(provider); } } }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var displayName = metadata.GetDisplayName(); var modelClientValidationRule = new ModelClientValidationRule() { ValidationType = "requiredif", ErrorMessage = string.Format(this.ErrorMessageString, displayName) }; modelClientValidationRule.ValidationParameters.Add("dependentproperty", this.dependentProperty); modelClientValidationRule.ValidationParameters.Add("dependentvalue", this.dependentValue); yield return(modelClientValidationRule); }
/// <summary> /// Retrieves a collection of client validation rules (which are next sent to browsers). /// </summary> /// <returns> /// A collection of client validation rules. /// </returns> public override IEnumerable <ModelClientValidationRule> GetClientValidationRules() { var rule = new ModelClientValidationRule { ErrorMessage = FormattedErrorMessage, ValidationType = ProvideUniqueValidationType("requiredif") }; rule.ValidationParameters.Add("expression", Expression); rule.ValidationParameters.Add("fieldsmap", FieldsMap.ToJson()); rule.ValidationParameters.Add("constsmap", ConstsMap.ToJson()); rule.ValidationParameters.Add("allowempty", AllowEmpty.ToJson()); yield return(rule); }
// Diretivas para validação do lado do Cliente, implementa com jquery.validate public IEnumerable <ModelClientValidationRule> GetClientValidationRules( ModelMetadata metadata, ControllerContext context) { var Rule = new ModelClientValidationRule { ValidationType = "emailbrasil", ErrorMessage = this.FormatErrorMessage(metadata.PropertyName) }; Rule.ValidationParameters["emailrequerido"] = EmailRequerido; yield return(Rule); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var errorMessage = DependencyResolver.Current.GetService <ILocalizationService>() .GetResource(_errorMessageResourceName).FormatWith(metadata.DisplayName); ModelClientValidationRule mvr = new ModelClientValidationRule { ErrorMessage = errorMessage, ValidationType = "allowedextensions" }; mvr.ValidationParameters.Add("extensions", string.Join(",", AllowedExtensions)); return(new[] { mvr }); }
static void ValidateUnobtrusiveValidationRule(ModelClientValidationRule rule, IDictionary <string, object> resultsDictionary, string dictionaryKey) { if (String.IsNullOrWhiteSpace(rule.ValidationType)) { throw new InvalidOperationException( String.Format( CultureInfo.CurrentCulture, WebPageResources.UnobtrusiveJavascript_ValidationTypeCannotBeEmpty, rule.GetType().FullName)); } if (resultsDictionary.ContainsKey(dictionaryKey)) { throw new InvalidOperationException( String.Format( CultureInfo.CurrentCulture, WebPageResources.UnobtrusiveJavascript_ValidationTypeMustBeUnique, rule.ValidationType)); } if (rule.ValidationType.Any(c => !Char.IsLower(c))) { throw new InvalidOperationException( String.Format(CultureInfo.CurrentCulture, WebPageResources.UnobtrusiveJavascript_ValidationTypeMustBeLegal, rule.ValidationType, rule.GetType().FullName)); } foreach (var key in rule.ValidationParameters.Keys) { if (String.IsNullOrWhiteSpace(key)) { throw new InvalidOperationException( String.Format( CultureInfo.CurrentCulture, WebPageResources.UnobtrusiveJavascript_ValidationParameterCannotBeEmpty, rule.GetType().FullName)); } if (!Char.IsLower(key.First()) || key.Any(c => !Char.IsLower(c) && !Char.IsDigit(c))) { throw new InvalidOperationException( String.Format( CultureInfo.CurrentCulture, WebPageResources.UnobtrusiveJavascript_ValidationParameterMustBeLegal, key, rule.GetType().FullName)); } } }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule() { ErrorMessage = Resources.InvalidInputCharacter, ValidationType = "textlineinput" }; rule.ValidationParameters.Add("pattern", Resources.TextLineValidatorRegEx); return(new List <ModelClientValidationRule>() { rule }); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules( ModelMetadata metadata, ControllerContext context ) { var rule = new ModelClientValidationRule { ValidationType = "accept", ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()) }; rule.ValidationParameters["mimetype"] = MimeTypesNormalized; yield return(rule); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules( ModelMetadata metadata, ControllerContext context) { var clientValidationRule = new ModelClientValidationRule() { ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()), ValidationType = "notlessthan"//这里是核心点 }; clientValidationRule.ValidationParameters.Add("otherproperty", OtherProperty); return(new[] { clientValidationRule }); }
IEnumerable <ModelClientValidationRule> IClientValidatable.GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule(); rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()); rule.ValidationParameters.Add( "validationcallback", $@"function(options) {{ var now = new Date(); return options.value && options.value <= now.setFullYear(now.getFullYear() - {Age}); }}"); rule.ValidationType = "custom"; yield return(rule); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule() { ErrorMessage = String.IsNullOrEmpty(ErrorMessage) ? FormatErrorMessage(metadata.DisplayName) : ErrorMessage, ValidationType = "phoneregex", }; rule.ValidationParameters.Add("regex", Regex); rule.ValidationParameters.Add("drerrormessage", ErrorMessage); rule.ValidationParameters.Add("isandoperator", IsAndOperator.ToString()); rule.ValidationParameters.Add("isdrrequired", IsRequired.ToString()); yield return(rule); }
/// <summary> /// Get Client Validation Rules /// </summary> /// <param name="metadata">metadata object</param> /// <param name="context">context Object</param> /// <returns>Return ModelClientValidationRule List</returns> public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var validTypes = string.Join(",", this.ValidExtensions.Select(ext => ext.ToString()).ToArray()); var result = new ModelClientValidationRule() { ValidationType = this.GetType().Name.Replace("Attribute", string.Empty).ToLower(), ////ErrorMessage = $"File extension for field {metadata.DisplayName ?? metadata.PropertyName} is invalid. Valid file types: {validTypes}" ErrorMessage = "File extension for field " + metadata.DisplayName ?? metadata.PropertyName + " is invalid. Valid file types: " + validTypes + " OR the file exceeds the maximum allowed file size." }; result.ValidationParameters.Add("validtypes", validTypes); yield return(result); }
GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var validationRule = new ModelClientValidationRule { //ErrorMessage = FormatErrorMessage(metadata.DisplayName), ErrorMessage = this.ErrorMessage, ValidationType = "notequal", }; //validationRule.ValidationParameters.Add("value", NotEqualValue); //validationRule.ValidationParameters.Add("value", NotEqualValue); validationRule.ValidationParameters["other"] = NotEqualValue; yield return(validationRule); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { ErrorMessage = UmbracoValidationHelper.GetDictionaryItem(_errorMessageDictionaryKey); var error = FormatErrorMessage(metadata.DisplayName); var rule = new ModelClientValidationRule(); rule.ErrorMessage = error; rule.ValidationType = "regex"; rule.ValidationParameters.Add("pattern", this.Pattern); yield return(rule); }
/// <summary> /// Gets the client validation rules, where the validation message is a localised error message from the Sitecore CMS dictionary given a key. /// </summary> /// <param name="metadata">Model metadata</param> /// <param name="validationType">Validation type "key"</param> /// <param name="dictionaryKey">Key in the Sitecore dictionary to retrieve validation error message with.</param> /// <returns></returns> public static List <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, string validationType, string dictionaryKey) { var modelClientValidationRule = new ModelClientValidationRule { ValidationType = validationType, ErrorMessage = GetErrorMessage(dictionaryKey) }; modelClientValidationRule.ValidationParameters.Add("param", metadata.PropertyName); return(new List <ModelClientValidationRule> { modelClientValidationRule }); }
public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { //THIS IS FOR SET VALIDATION RULES CLIENT SIDE var rule = new ModelClientValidationRule() { ValidationType = "agerangevalidation", ErrorMessage = FormatErrorMessage(metadata.DisplayName) }; rule.ValidationParameters["minage"] = MinAge; rule.ValidationParameters["maxage"] = MaxAge; yield return(rule); }
/// <summary> /// 返回客户端验证规则 /// </summary> public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { ModelClientValidationRule rule = new ModelClientValidationRule { ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()), //该值必须为全小写,其值与自定义的客户端脚本中验证方法名相同 //属性data-val-requirediftrue="ErrorMessage"会添加到对应的HTML标签上 ValidationType = "requirediftrue" }; //data-val-requirediftrue-dependentproperty="_dependentPropertyName" rule.ValidationParameters.Add("dependentproperty", _dependentPropertyName); yield return(rule); }
public void Validate_AddsClientValidationMetadata() { var originalProviders = ModelValidatorProviders.Providers.ToArray(); ModelValidatorProviders.Providers.Clear(); try { // Arrange HtmlHelper htmlHelper = MvcHelper.GetHtmlHelper(GetViewDataWithModelErrors()); FormContext formContext = new FormContext() { FormId = "form_id" }; htmlHelper.ViewContext.ClientValidationEnabled = true; htmlHelper.ViewContext.FormContext = formContext; ModelClientValidationRule[] expectedValidationRules = new ModelClientValidationRule[] { new ModelClientValidationRule() { ValidationType = "ValidationRule1" }, new ModelClientValidationRule() { ValidationType = "ValidationRule2" } }; Mock<ModelValidator> mockValidator = new Mock<ModelValidator>(ModelMetadata.FromStringExpression("", htmlHelper.ViewContext.ViewData), htmlHelper.ViewContext); mockValidator.Setup(v => v.GetClientValidationRules()) .Returns(expectedValidationRules); Mock<ModelValidatorProvider> mockValidatorProvider = new Mock<ModelValidatorProvider>(); mockValidatorProvider.Setup(vp => vp.GetValidators(It.IsAny<ModelMetadata>(), It.IsAny<ControllerContext>())) .Returns(new[] { mockValidator.Object }); ModelValidatorProviders.Providers.Add(mockValidatorProvider.Object); // Act htmlHelper.Validate("baz"); // Assert Assert.NotNull(formContext.GetValidationMetadataForField("baz")); Assert.Equal(expectedValidationRules, formContext.FieldValidators["baz"].ValidationRules.ToArray()); } finally { ModelValidatorProviders.Providers.Clear(); foreach (var provider in originalProviders) { ModelValidatorProviders.Providers.Add(provider); } } }
public void GetJsonValidationMetadata_ValidationSummary() { // Arrange FormContext context = new FormContext() { FormId = "theFormId", ValidationSummaryId = "validationSummary" }; ModelClientValidationRule rule = new ModelClientValidationRule() { ValidationType = "ValidationType1", ErrorMessage = "Error Message" }; rule.ValidationParameters["theParam"] = new { FirstName = "John", LastName = "Doe", Age = 32 }; FieldValidationMetadata metadata = new FieldValidationMetadata() { FieldName = "theFieldName", ValidationMessageId = "theFieldName_ValidationMessage" }; metadata.ValidationRules.Add(rule); context.FieldValidators["theFieldName"] = metadata; // Act string jsonMetadata = context.GetJsonValidationMetadata(); // Assert string expected = @"{""Fields"":[{""FieldName"":""theFieldName"",""ReplaceValidationMessageContents"":false,""ValidationMessageId"":""theFieldName_ValidationMessage"",""ValidationRules"":[{""ErrorMessage"":""Error Message"",""ValidationParameters"":{""theParam"":{""FirstName"":""John"",""LastName"":""Doe"",""Age"":32}},""ValidationType"":""ValidationType1""}]}],""FormId"":""theFormId"",""ReplaceValidationSummary"":false,""ValidationSummaryId"":""validationSummary""}"; Assert.Equal(expected, jsonMetadata); }
public void GetUnobtrusiveValidationAttributesWithTwoClientRules() { // Arrange var formContext = new FormContext(); var viewContext = new Mock<ViewContext>(); viewContext.SetupGet(vc => vc.FormContext).Returns(formContext); viewContext.SetupGet(vc => vc.ClientValidationEnabled).Returns(true); viewContext.SetupGet(vc => vc.UnobtrusiveJavaScriptEnabled).Returns(true); var viewDataContainer = MvcHelper.GetViewDataContainer(new ViewDataDictionary()); var htmlHelper = new HtmlHelper(viewContext.Object, viewDataContainer); htmlHelper.ClientValidationRuleFactory = delegate { ModelClientValidationRule rule1 = new ModelClientValidationRule { ValidationType = "type", ErrorMessage = "error" }; rule1.ValidationParameters["foo"] = "bar"; rule1.ValidationParameters["baz"] = "biff"; ModelClientValidationRule rule2 = new ModelClientValidationRule { ValidationType = "othertype", ErrorMessage = "othererror" }; rule2.ValidationParameters["true3"] = "false4"; return new[] { rule1, rule2 }; }; // Act IDictionary<string, object> result = htmlHelper.GetUnobtrusiveValidationAttributes("foobar"); // Assert Assert.Equal("error", result["data-val-type"]); Assert.Equal("bar", result["data-val-type-foo"]); Assert.Equal("biff", result["data-val-type-baz"]); Assert.Equal("othererror", result["data-val-othertype"]); Assert.Equal("false4", result["data-val-othertype-true3"]); }
public void ValidationMessageWithClientValidation_ExplicitMessage_Valid_Unobtrusive() { var originalProviders = ModelValidatorProviders.Providers.ToArray(); ModelValidatorProviders.Providers.Clear(); try { // Arrange HtmlHelper htmlHelper = MvcHelper.GetHtmlHelper(GetViewDataWithModelErrors()); FormContext formContext = new FormContext(); htmlHelper.ViewContext.ClientValidationEnabled = true; htmlHelper.ViewContext.UnobtrusiveJavaScriptEnabled = true; htmlHelper.ViewContext.FormContext = formContext; ModelClientValidationRule[] expectedValidationRules = new ModelClientValidationRule[] { new ModelClientValidationRule() { ValidationType = "ValidationRule1" }, new ModelClientValidationRule() { ValidationType = "ValidationRule2" } }; Mock<ModelValidator> mockValidator = new Mock<ModelValidator>(ModelMetadata.FromStringExpression("", htmlHelper.ViewContext.ViewData), htmlHelper.ViewContext); mockValidator.Setup(v => v.GetClientValidationRules()) .Returns(expectedValidationRules); Mock<ModelValidatorProvider> mockValidatorProvider = new Mock<ModelValidatorProvider>(); mockValidatorProvider.Setup(vp => vp.GetValidators(It.IsAny<ModelMetadata>(), It.IsAny<ControllerContext>())) .Returns(new[] { mockValidator.Object }); ModelValidatorProviders.Providers.Add(mockValidatorProvider.Object); // Act MvcHtmlString html = htmlHelper.ValidationMessage("baz", "some explicit message"); // 'baz' is valid // Assert Assert.Equal("<span class=\"field-validation-valid\" data-valmsg-for=\"baz\" data-valmsg-replace=\"false\">some explicit message</span>", html.ToHtmlString()); } finally { ModelValidatorProviders.Providers.Clear(); foreach (var provider in originalProviders) { ModelValidatorProviders.Providers.Add(provider); } } }
public void ValidationMessageWithClientValidation_DefaultMessage_Valid() { var originalProviders = ModelValidatorProviders.Providers.ToArray(); ModelValidatorProviders.Providers.Clear(); try { // Arrange HtmlHelper htmlHelper = MvcHelper.GetHtmlHelper(GetViewDataWithModelErrors()); FormContext formContext = new FormContext(); htmlHelper.ViewContext.ClientValidationEnabled = true; htmlHelper.ViewContext.FormContext = formContext; ModelClientValidationRule[] expectedValidationRules = new ModelClientValidationRule[] { new ModelClientValidationRule() { ValidationType = "ValidationRule1" }, new ModelClientValidationRule() { ValidationType = "ValidationRule2" } }; Mock<ModelValidator> mockValidator = new Mock<ModelValidator>(ModelMetadata.FromStringExpression("", htmlHelper.ViewContext.ViewData), htmlHelper.ViewContext); mockValidator.Setup(v => v.GetClientValidationRules()) .Returns(expectedValidationRules); Mock<ModelValidatorProvider> mockValidatorProvider = new Mock<ModelValidatorProvider>(); mockValidatorProvider.Setup(vp => vp.GetValidators(It.IsAny<ModelMetadata>(), It.IsAny<ControllerContext>())) .Returns(new[] { mockValidator.Object }); ModelValidatorProviders.Providers.Add(mockValidatorProvider.Object); // Act MvcHtmlString html = htmlHelper.ValidationMessage("baz"); // 'baz' is valid // Assert Assert.Equal("<span class=\"field-validation-valid\" id=\"baz_validationMessage\"></span>", html.ToHtmlString()); Assert.NotNull(formContext.GetValidationMetadataForField("baz")); Assert.Equal("baz_validationMessage", formContext.FieldValidators["baz"].ValidationMessageId); Assert.True(formContext.FieldValidators["baz"].ReplaceValidationMessageContents); Assert.Equal(expectedValidationRules, formContext.FieldValidators["baz"].ValidationRules.ToArray()); } finally { ModelValidatorProviders.Providers.Clear(); foreach (var provider in originalProviders) { ModelValidatorProviders.Providers.Add(provider); } } }
public void ValidationMessageForWithClientValidation_Unobtrusive() { var originalProviders = ModelValidatorProviders.Providers.ToArray(); ModelValidatorProviders.Providers.Clear(); try { // Arrange HtmlHelper<ValidationModel> htmlHelper = MvcHelper.GetHtmlHelper(GetViewDataWithModelErrors()); FormContext formContext = new FormContext(); htmlHelper.ViewContext.ClientValidationEnabled = true; htmlHelper.ViewContext.UnobtrusiveJavaScriptEnabled = true; htmlHelper.ViewContext.FormContext = formContext; ModelClientValidationRule[] expectedValidationRules = new ModelClientValidationRule[] { new ModelClientValidationRule() { ValidationType = "ValidationRule1" }, new ModelClientValidationRule() { ValidationType = "ValidationRule2" } }; Mock<ModelValidator> mockValidator = new Mock<ModelValidator>(ModelMetadata.FromStringExpression("", htmlHelper.ViewContext.ViewData), htmlHelper.ViewContext); mockValidator.Setup(v => v.GetClientValidationRules()) .Returns(expectedValidationRules); Mock<ModelValidatorProvider> mockValidatorProvider = new Mock<ModelValidatorProvider>(); mockValidatorProvider.Setup(vp => vp.GetValidators(It.IsAny<ModelMetadata>(), It.IsAny<ControllerContext>())) .Returns(new[] { mockValidator.Object }); ModelValidatorProviders.Providers.Add(mockValidatorProvider.Object); // Act MvcHtmlString html = htmlHelper.ValidationMessageFor(m => m.baz); // Assert Assert.AreEqual(@"<span class=""field-validation-valid"" data-valmsg-for=""baz"" data-valmsg-replace=""true""></span>", html.ToHtmlString(), "ValidationMessageFor() should always return something if client validation is enabled."); } finally { ModelValidatorProviders.Providers.Clear(); foreach (var provider in originalProviders) { ModelValidatorProviders.Providers.Add(provider); } } }
public void GetUnobtrusiveValidationAttributesGuardClauses() { // Arrange var formContext = new FormContext(); var viewContext = new Mock<ViewContext>(); viewContext.SetupGet(vc => vc.FormContext).Returns(formContext); viewContext.SetupGet(vc => vc.ClientValidationEnabled).Returns(true); viewContext.SetupGet(vc => vc.UnobtrusiveJavaScriptEnabled).Returns(true); var viewDataContainer = MvcHelper.GetViewDataContainer(new ViewDataDictionary()); var htmlHelper = new HtmlHelper(viewContext.Object, viewDataContainer); // Act & Assert AssertBadClientValidationRule(htmlHelper, "Validation type names in unobtrusive client validation rules cannot be empty. Client rule type: System.Web.Mvc.ModelClientValidationRule", new ModelClientValidationRule()); AssertBadClientValidationRule(htmlHelper, "Validation type names in unobtrusive client validation rules must consist of only lowercase letters. Invalid name: \"OnlyLowerCase\", client rule type: System.Web.Mvc.ModelClientValidationRule", new ModelClientValidationRule { ValidationType = "OnlyLowerCase" }); AssertBadClientValidationRule(htmlHelper, "Validation type names in unobtrusive client validation rules must consist of only lowercase letters. Invalid name: \"nonumb3rs\", client rule type: System.Web.Mvc.ModelClientValidationRule", new ModelClientValidationRule { ValidationType = "nonumb3rs" }); AssertBadClientValidationRule(htmlHelper, "Validation type names in unobtrusive client validation rules must be unique. The following validation type was seen more than once: rule", new ModelClientValidationRule { ValidationType = "rule" }, new ModelClientValidationRule { ValidationType = "rule" }); var emptyParamName = new ModelClientValidationRule { ValidationType = "type" }; emptyParamName.ValidationParameters[""] = "foo"; AssertBadClientValidationRule(htmlHelper, "Validation parameter names in unobtrusive client validation rules cannot be empty. Client rule type: System.Web.Mvc.ModelClientValidationRule", emptyParamName); var paramNameMixedCase = new ModelClientValidationRule { ValidationType = "type" }; paramNameMixedCase.ValidationParameters["MixedCase"] = "foo"; AssertBadClientValidationRule(htmlHelper, "Validation parameter names in unobtrusive client validation rules must start with a lowercase letter and consist of only lowercase letters or digits. Validation parameter name: MixedCase, client rule type: System.Web.Mvc.ModelClientValidationRule", paramNameMixedCase); var paramNameStartsWithNumber = new ModelClientValidationRule { ValidationType = "type" }; paramNameStartsWithNumber.ValidationParameters["2112"] = "foo"; AssertBadClientValidationRule(htmlHelper, "Validation parameter names in unobtrusive client validation rules must start with a lowercase letter and consist of only lowercase letters or digits. Validation parameter name: 2112, client rule type: System.Web.Mvc.ModelClientValidationRule", paramNameStartsWithNumber); }
public void ValidationMessageWithClientValidation() { var originalProvider = ModelValidatorProviders.Current; try { // Arrange HtmlHelper htmlHelper = HtmlHelperTest.GetHtmlHelper(GetViewDataWithModelErrors()); FormContext formContext = new FormContext() { ClientValidationEnabled = true, FormId = "form_id" }; htmlHelper.ViewContext.FormContext = formContext; ModelClientValidationRule[] expectedValidationRules = new ModelClientValidationRule[] { new ModelClientValidationRule() { ValidationType = "ValidationRule1" }, new ModelClientValidationRule() { ValidationType = "ValidationRule2" } }; Mock<ModelValidator> mockValidator = new Mock<ModelValidator>(ModelMetadata.FromStringExpression("", htmlHelper.ViewContext.ViewData), htmlHelper.ViewContext); mockValidator.Expect(v => v.GetClientValidationRules()) .Returns(expectedValidationRules); Mock<ModelValidatorProvider> mockValidatorProvider = new Mock<ModelValidatorProvider>(); mockValidatorProvider.Expect(vp => vp.GetValidators(It.IsAny<ModelMetadata>(), It.IsAny<ControllerContext>())) .Returns(new[] { mockValidator.Object }); ModelValidatorProviders.Current = mockValidatorProvider.Object; // Act MvcHtmlString html = htmlHelper.ValidationMessage("baz"); // Assert Assert.AreEqual(@"<span class=""field-validation-error"" id=""form_id_baz_validator""></span>", html.ToHtmlString(), "ValidationMessage() should always return something if client validation is enabled."); Assert.IsNotNull(formContext.GetValidationMetadataForField("baz")); Assert.AreEqual("form_id_baz_validator", formContext.FieldValidators["baz"].ValidatorId); CollectionAssert.AreEqual(expectedValidationRules, formContext.FieldValidators["baz"].ValidationRules.ToArray()); } finally { ModelValidatorProviders.Current = originalProvider; } }