a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
345 lines
12 KiB
C#
345 lines
12 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
using System.Collections.Generic;
|
|
using System.Web.WebPages.Html;
|
|
using Xunit;
|
|
|
|
namespace System.Web.WebPages.Test
|
|
{
|
|
public class ValidationHelperTest
|
|
{
|
|
[Fact]
|
|
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());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationMessageReturnsFirstError()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationMessage("foo");
|
|
|
|
// Assert
|
|
Assert.Equal(@"<span class=""field-validation-error"" data-valmsg-for=""foo"" data-valmsg-replace=""true"">foo error <1></span>", html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationMessageUsesValidCssClassIfFieldDoesNotHaveErrors()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationMessage("baz");
|
|
|
|
// Assert
|
|
Assert.Equal(@"<span class=""field-validation-valid"" data-valmsg-for=""baz"" data-valmsg-replace=""true""></span>", html.ToString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationMessageReturnsWithObjectAttributes()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationMessage("foo", new { attr = "attr-value" });
|
|
|
|
// Assert
|
|
Assert.Equal(@"<span attr=""attr-value"" class=""field-validation-error"" data-valmsg-for=""foo"" data-valmsg-replace=""true"">foo error <1></span>",
|
|
html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationMessageReturnsWithCustomMessage()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Atc
|
|
var html = htmlHelper.ValidationMessage("foo", "bar error");
|
|
|
|
// Assert
|
|
Assert.Equal(@"<span class=""field-validation-error"" data-valmsg-for=""foo"" data-valmsg-replace=""false"">bar error</span>", html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationMessageReturnsWithCustomMessageAndObjectAttributes()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationMessage("foo", "bar error", new { baz = "baz" });
|
|
|
|
// Assert
|
|
Assert.Equal(@"<span baz=""baz"" class=""field-validation-error"" data-valmsg-for=""foo"" data-valmsg-replace=""false"">bar error</span>", html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationMessageWithModelStateAndNoErrors()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationMessage("baz");
|
|
|
|
// Assert
|
|
Assert.Equal(@"<span class=""field-validation-valid"" data-valmsg-for=""baz"" data-valmsg-replace=""true""></span>", html.ToString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummary()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary();
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div class=""validation-summary-errors"" data-valmsg-summary=""true""><ul>
|
|
<li>foo error <1></li>
|
|
<li>foo error <2></li>
|
|
<li>bar error <1></li>
|
|
<li>bar error <2></li>
|
|
</ul></div>"
|
|
, html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummaryWithMessage()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary("test message");
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div class=""validation-summary-errors"" data-valmsg-summary=""true""><span>test message</span>
|
|
<ul>
|
|
<li>foo error <1></li>
|
|
<li>foo error <2></li>
|
|
<li>bar error <1></li>
|
|
<li>bar error <2></li>
|
|
</ul></div>"
|
|
, html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummaryWithFormErrors()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithFormErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary();
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div class=""validation-summary-errors"" data-valmsg-summary=""true""><ul>
|
|
<li>foo error <1></li>
|
|
<li>foo error <2></li>
|
|
<li>bar error <1></li>
|
|
<li>bar error <2></li>
|
|
<li>some form error <1></li>
|
|
<li>some form error <2></li>
|
|
</ul></div>"
|
|
, html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummaryWithFormErrorsAndExcludeFieldErrors()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithFormErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary(excludeFieldErrors: true);
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div class=""validation-summary-errors""><ul>
|
|
<li>some form error <1></li>
|
|
<li>some form error <2></li>
|
|
</ul></div>"
|
|
, html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummaryWithObjectProperties()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary(new { attr = "attr-value", @class = "my-class" });
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div attr=""attr-value"" class=""validation-summary-errors my-class"" data-valmsg-summary=""true""><ul>
|
|
<li>foo error <1></li>
|
|
<li>foo error <2></li>
|
|
<li>bar error <1></li>
|
|
<li>bar error <2></li>
|
|
</ul></div>"
|
|
, html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummaryWithDictionary()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary(new Dictionary<string, object> { { "attr", "attr-value" }, { "class", "my-class" } });
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div attr=""attr-value"" class=""validation-summary-errors my-class"" data-valmsg-summary=""true""><ul>
|
|
<li>foo error <1></li>
|
|
<li>foo error <2></li>
|
|
<li>bar error <1></li>
|
|
<li>bar error <2></li>
|
|
</ul></div>"
|
|
, html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummaryWithDictionaryAndMessage()
|
|
{
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary("This is a message.", new Dictionary<string, object> { { "attr", "attr-value" }, { "class", "my-class" } });
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div attr=""attr-value"" class=""validation-summary-errors my-class"" data-valmsg-summary=""true""><span>This is a message.</span>
|
|
<ul>
|
|
<li>foo error <1></li>
|
|
<li>foo error <2></li>
|
|
<li>bar error <1></li>
|
|
<li>bar error <2></li>
|
|
</ul></div>"
|
|
, html.ToHtmlString());
|
|
}
|
|
|
|
//[Fact]
|
|
// Cant test this, as it sets a static property
|
|
public void ValidationSummaryWithCustomValidationSummaryClass()
|
|
{
|
|
// Arrange
|
|
HtmlHelper.ValidationSummaryClass = "my-val-class";
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(GetModelStateWithErrors());
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary("This is a message.", new Dictionary<string, object> { { "attr", "attr-value" }, { "class", "my-class" } });
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div attr=""attr-value"" class=""my-val-class my-class""><span>This is a message.</span>
|
|
<ul>
|
|
<li>foo error <1></li>
|
|
<li>foo error <2></li>
|
|
<li>bar error <1></li>
|
|
<li>bar error <2></li>
|
|
</ul></div>"
|
|
, html.ToHtmlString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummaryWithNoErrorReturnsNullIfExcludeFieldErrorsIsSetToFalse()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create();
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary(excludeFieldErrors: false);
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div class=""validation-summary-valid"" data-valmsg-summary=""true""><ul>
|
|
</ul></div>", html.ToString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummaryWithNoErrorReturnsNull()
|
|
{
|
|
// Arrange
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create();
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary(excludeFieldErrors: true);
|
|
|
|
// Assert
|
|
Assert.Null(html);
|
|
}
|
|
|
|
[Fact]
|
|
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);
|
|
}
|
|
|
|
[Fact]
|
|
public void ValidationSummaryWithMultipleFormErrorsAndExcludedFieldErrors()
|
|
{
|
|
// Arrange
|
|
ModelStateDictionary modelState = new ModelStateDictionary();
|
|
modelState.AddFormError("error <1>");
|
|
modelState.AddFormError("error <2>");
|
|
|
|
HtmlHelper htmlHelper = HtmlHelperFactory.Create(modelState);
|
|
|
|
// Act
|
|
var html = htmlHelper.ValidationSummary(excludeFieldErrors: true);
|
|
|
|
// Assert
|
|
Assert.Equal(@"<div class=""validation-summary-errors""><ul>
|
|
<li>error <1></li>
|
|
<li>error <2></li>
|
|
</ul></div>"
|
|
, 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;
|
|
}
|
|
|
|
private static ModelStateDictionary GetModelStateWithFormErrors()
|
|
{
|
|
ModelStateDictionary modelState = GetModelStateWithErrors();
|
|
modelState.AddFormError("some form error <1>");
|
|
modelState.AddFormError("some form error <2>");
|
|
return modelState;
|
|
}
|
|
}
|
|
}
|