public void ValidationMessageAllowsEmptyModelName() { // Arrange ModelStateDictionary dictionary = new ModelStateDictionary(); dictionary.AddError("test", "some error text"); HtmlHelper htmlHelper = new HtmlHelper(dictionary); // Act var html = htmlHelper.ValidationMessage("test"); // Assert Assert.AreEqual(@"<span class=""field-validation-error"">some error text</span>", html.ToHtmlString()); }
public void ValidationMessageAllowsEmptyModelName() { // Arrange ModelStateDictionary dictionary = new ModelStateDictionary(); dictionary.AddError("test", "some error text"); HtmlHelper htmlHelper = HtmlHelperFactory.Create(dictionary); // Act var html = htmlHelper.ValidationMessage("test"); // Assert Assert.Equal(@"<span class=""field-validation-error"" data-valmsg-for=""test"" data-valmsg-replace=""true"">some error text</span>", html.ToHtmlString()); }
public void TextAreaWithErrorAndCustomCssClass() { // Arrange ModelStateDictionary modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.TextArea("foo", String.Empty, new { @class = "my-css" }); // Assert Assert.Equal(@"<textarea class=""input-validation-error my-css"" cols=""20"" id=""foo"" name=""foo"" rows=""2""></textarea>", html.ToHtmlString()); }
public static void FillWithErrors(this ModelStateDictionary modelstate, List <string> errors) { if (errors == null) { return; } int counter = 1; foreach (var error in errors) { modelstate.AddError(counter.ToString(), error); counter++; } }
public void GetErrorsReturnsErrorsAddedViaAddError() { // Arrange var modelStateDictionary = new ModelStateDictionary(); ValidationHelper validationHelper = GetValidationHelper( GetContext(), modelStateDictionary ); // Act modelStateDictionary.AddError("foo", "Foo error"); var errors = validationHelper.GetErrors("foo"); // Assert Assert.Equal(new[] { "Foo error" }, errors); }
// [TestMethod] // Cant test this in multi-threaded public void TextAreaWithCustomErrorClass() { // Arrange ModelStateDictionary modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper.ValidationInputCssClassName = "custom-field-validation-error"; HtmlHelper helper = new HtmlHelper(modelState); // Act var html = helper.TextArea("foo", String.Empty, new { @class = "my-css" }); // Assert Assert.AreEqual(@"<textarea class=""custom-field-validation-error my-css"" cols=""20"" id=""foo"" name=""foo"" rows=""2""></textarea>", html.ToHtmlString()); }
//[TestMethod] // Can't test as it sets a static property // Review: Need to redo test once we fix set once property public void CheckBoxUsesCustomErrorClass() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "error"); HtmlHelper.ValidationInputCssClassName = "my-error-class"; HtmlHelper helper = new HtmlHelper(modelState); // Act var html = helper.CheckBox("foo", true, new { @class = "my-class" }); // Assert Assert.AreEqual(@"<input checked=""checked"" class=""my-error-class my-class"" id=""foo"" name=""foo"" type=""checkbox"" />", html.ToHtmlString()); }
public void ValidationMessageAllowsEmptyModelName() { // Arrange ModelStateDictionary dictionary = new ModelStateDictionary(); dictionary.AddError("test", "some error text"); HtmlHelper htmlHelper = HtmlHelperFactory.Create(dictionary); // Act var html = htmlHelper.ValidationMessage("test"); // Assert Assert.Equal( "<span class=\"field-validation-error\" data-valmsg-for=\"test\" data-valmsg-replace=\"true\">some error text</span>", html.ToHtmlString() ); }
public void CheckBoxWithErrorAndCustomCss() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "error"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.CheckBox("foo", true, new { @class = "my-class" }); // Assert Assert.Equal( @"<input checked=""checked"" class=""input-validation-error my-class"" id=""foo"" name=""foo"" type=""checkbox"" />", html.ToHtmlString() ); }
public void ListBoxWithErrorsAndCustomClass() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper helper = new HtmlHelper(modelState); // Act var html = helper.ListBox("foo", GetSelectList(), new { @class = "my-class" }); // Assert Assert.AreEqual( @"<select class=""field-validation-error my-class"" id=""foo"" name=""foo""> <option value=""A"">Alpha</option> <option value=""B"">Bravo</option> <option value=""C"">Charlie</option> </select>", html.ToHtmlString()); }
public void ListBoxWithEmptyOptionLabel() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.ListBox("foo", GetSelectList(), new { @class = "my-class" }); // Assert Assert.Equal( "<select class=\"input-validation-error my-class\" id=\"foo\" name=\"foo\">" + Environment.NewLine + "<option value=\"A\">Alpha</option>" + Environment.NewLine + "<option value=\"B\">Bravo</option>" + Environment.NewLine + "<option value=\"C\">Charlie</option>" + Environment.NewLine + "</select>", html.ToHtmlString()); }
public void ListBoxWithEmptyOptionLabel() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.ListBox("foo", GetSelectList(), new { @class = "my-class" }); // Assert Assert.Equal( @"<select class=""input-validation-error my-class"" id=""foo"" name=""foo""> <option value=""A"">Alpha</option> <option value=""B"">Bravo</option> <option value=""C"">Charlie</option> </select>", html.ToHtmlString()); }
private IEnumerable <ValidationResult> ValidateFieldsAndUpdateModelState( IEnumerable <string> fields ) { var validationContext = new ValidationContext( _httpContext, serviceProvider: null, items: null ); var validationResults = new List <ValidationResult>(); foreach (var field in fields) { IEnumerable <ValidationResult> fieldResults = ValidateField( field, validationContext ); IEnumerable <string> errors = fieldResults.Select(c => c.ErrorMessage); ModelState modelState = _modelStateDictionary[field]; if (modelState != null && modelState.Errors.Any()) { errors = errors.Except(modelState.Errors, StringComparer.OrdinalIgnoreCase); // If there were other validation errors that were added via ModelState, add them to the collection. fieldResults = fieldResults.Concat( modelState.Errors.Select(e => new ValidationResult(e, new[] { field })) ); } foreach (var errorMessage in errors) { // Only add errors that haven't been encountered before. This is to prevent from the same error message being duplicated // if a call is made multiple times _modelStateDictionary.AddError(field, errorMessage); } validationResults.AddRange(fieldResults); } return(validationResults); }
public void ListBoxWithErrorAndExplictAndModelState() { // Arrange var modelState = new ModelStateDictionary(); modelState.SetModelValue("foo", "C"); modelState.AddError("foo", "test"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.ListBox("foo.bar", "Select One", GetSelectList()); // Assert Assert.Equal( @"<select id=""foo_bar"" name=""foo.bar""> <option value="""">Select One</option> <option value=""A"">Alpha</option> <option value=""B"">Bravo</option> <option value=""C"">Charlie</option> </select>", html.ToHtmlString()); }
public void ListBoxWithErrorAndExplictAndModelState() { // Arrange var modelState = new ModelStateDictionary(); modelState.SetModelValue("foo", "C"); modelState.AddError("foo", "test"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.ListBox("foo.bar", "Select One", GetSelectList()); // Assert Assert.Equal( "<select id=\"foo_bar\" name=\"foo.bar\">" + Environment.NewLine + "<option value=\"\">Select One</option>" + Environment.NewLine + "<option value=\"A\">Alpha</option>" + Environment.NewLine + "<option value=\"B\">Bravo</option>" + Environment.NewLine + "<option value=\"C\">Charlie</option>" + Environment.NewLine + "</select>", html.ToHtmlString()); }
private static ModelStateDictionary GetModelStateWithErrors() { ModelStateDictionary modelState = new ModelStateDictionary(); modelState.AddError("foo", "foo error <1>"); modelState.AddError("foo", "foo error <2>"); modelState.AddError("bar", "bar error <1>"); modelState.AddError("bar", "bar error <2>"); return modelState; }
public void ValidationSummaryWithNoFormErrorsAndExcludedFieldErrorsReturnsNull() { // Arrange ModelStateDictionary modelState = new ModelStateDictionary(); modelState.AddError("foo", "error"); modelState.AddError("bar", "error"); HtmlHelper htmlHelper = HtmlHelperFactory.Create(modelState); // Act var html = htmlHelper.ValidationSummary(excludeFieldErrors: true); // Assert Assert.Null(html); }
public void ListBoxWithEmptyOptionLabel() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.ListBox("foo", GetSelectList(), new { @class = "my-class" }); // Assert Assert.Equal( @"<select class=""input-validation-error my-class"" id=""foo"" name=""foo""> <option value=""A"">Alpha</option> <option value=""B"">Bravo</option> <option value=""C"">Charlie</option> </select>", html.ToHtmlString()); }
public void ListBoxWithErrorAndExplictAndModelState() { // Arrange var modelState = new ModelStateDictionary(); modelState.SetModelValue("foo", "C"); modelState.AddError("foo", "test"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.ListBox("foo.bar", "Select One", GetSelectList()); // Assert Assert.Equal( "<select id=\"foo_bar\" name=\"foo.bar\">" + Environment.NewLine + "<option value=\"\">Select One</option>" + Environment.NewLine + "<option value=\"A\">Alpha</option>" + Environment.NewLine + "<option value=\"B\">Bravo</option>" + Environment.NewLine + "<option value=\"C\">Charlie</option>" + Environment.NewLine + "</select>", html.ToHtmlString()); }
// [Fact] // Cant test this in multi-threaded public void TextAreaWithCustomErrorClass() { // Arrange ModelStateDictionary modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper.ValidationInputCssClassName = "custom-input-validation-error"; HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.TextArea("foo", String.Empty, new { @class = "my-css" }); // Assert Assert.Equal(@"<textarea class=""custom-input-validation-error my-css"" cols=""20"" id=""foo"" name=""foo"" rows=""2""></textarea>", html.ToHtmlString()); }
public void ListBoxWithEmptyOptionLabel() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.ListBox("foo", GetSelectList(), new { @class = "my-class" }); // Assert Assert.Equal( "<select class=\"input-validation-error my-class\" id=\"foo\" name=\"foo\">" + Environment.NewLine + "<option value=\"A\">Alpha</option>" + Environment.NewLine + "<option value=\"B\">Bravo</option>" + Environment.NewLine + "<option value=\"C\">Charlie</option>" + Environment.NewLine + "</select>", html.ToHtmlString()); }
public void ListBoxWithErrorAndExplictAndModelState() { // Arrange var modelState = new ModelStateDictionary(); modelState.SetModelValue("foo", "C"); modelState.AddError("foo", "test"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.ListBox("foo.bar", "Select One", GetSelectList()); // Assert Assert.Equal( @"<select id=""foo_bar"" name=""foo.bar""> <option value="""">Select One</option> <option value=""A"">Alpha</option> <option value=""B"">Bravo</option> <option value=""C"">Charlie</option> </select>", html.ToHtmlString()); }
public void TextAreaWithErrorAndCustomCssClass() { // Arrange ModelStateDictionary modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper helper = new HtmlHelper(modelState); // Act var html = helper.TextArea("foo", String.Empty, new { @class = "my-css" }); // Assert Assert.AreEqual(@"<textarea class=""field-validation-error my-css"" cols=""20"" id=""foo"" name=""foo"" rows=""2""></textarea>", html.ToHtmlString()); }
public int SavePost(HttpRequestBase Request, ModelStateDictionary ms) { int postId, userId; string Title = Request.Unvalidated("Title"), Content = Request.Unvalidated("Content"); int.TryParse(Request.Unvalidated().Form["id"], out postId); int.TryParse(Request.Unvalidated().Form["UserId"], out userId); if(string.IsNullOrWhiteSpace(Title)) ms.AddError("Title", "Title cannot be empty!"); if(Title.Length > 100) ms.AddError("Title", "Title is too long!"); if(string.IsNullOrWhiteSpace(Content)) ms.AddError("Content", "You have to post something!"); if(!ms.IsValid) return 0; // tiny_mce bug? Content = Content.Replace("<p> </p>", ""); if(postId <= 0) { // Insert string Slug = string.Empty; foreach(var c in Title) if(char.IsLetterOrDigit(c)) Slug += c; else if(char.IsWhiteSpace(c)) Slug += "-"; db.Execute("INSERT INTO Posts (UserId, Published, Title, Content, Slug) VALUES (@0, @1, @2, @3, @4)", userId, DateTime.Now, Title, Content, Slug); postId = (int)db.GetLastInsertId(); } else { // Update db.Execute("UPDATE Posts SET Title=@0, Content=@1, Modified=@2 WHERE id=@3", Title, Content, DateTime.Now, postId); } return postId; }
public void CheckBoxWithErrorAndCustomCss() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "error"); HtmlHelper helper = HtmlHelperFactory.Create(modelState); // Act var html = helper.CheckBox("foo", true, new { @class = "my-class" }); // Assert Assert.Equal(@"<input checked=""checked"" class=""input-validation-error my-class"" id=""foo"" name=""foo"" type=""checkbox"" />", html.ToHtmlString()); }
public void GetErrorsReturnsErrorsAddedViaAddError() { // Arrange var modelStateDictionary = new ModelStateDictionary(); ValidationHelper validationHelper = GetValidationHelper(GetContext(), modelStateDictionary); // Act modelStateDictionary.AddError("foo", "Foo error"); var errors = validationHelper.GetErrors("foo"); // Assert Assert.Equal(new[] { "Foo error" }, errors); }
//[TestMethod] // Can't test as it sets a static property // Review: Need to redo test once we fix set once property public void CheckBoxUsesCustomErrorClass() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "error"); HtmlHelper.ValidationInputCssClassName = "my-error-class"; HtmlHelper helper = new HtmlHelper(modelState); // Act var html = helper.CheckBox("foo", true, new { @class = "my-class" }); // Assert Assert.AreEqual(@"<input checked=""checked"" class=""my-error-class my-class"" id=""foo"" name=""foo"" type=""checkbox"" />", html.ToHtmlString()); }
public void ListBoxWithErrorsAndCustomClass() { // Arrange var modelState = new ModelStateDictionary(); modelState.AddError("foo", "some error"); HtmlHelper helper = new HtmlHelper(modelState); // Act var html = helper.ListBox("foo", GetSelectList(), new { @class = "my-class" }); // Assert Assert.AreEqual( @"<select class=""field-validation-error my-class"" id=""foo"" name=""foo""> <option value=""A"">Alpha</option> <option value=""B"">Bravo</option> <option value=""C"">Charlie</option> </select>", html.ToHtmlString()); }