You've already forked linux-packaging-mono
acceptance-tests
data
debian
docs
external
Newtonsoft.Json
api-doc-tools
api-snapshot
aspnetwebstack
packages
src
test
Microsoft.TestCommon
Microsoft.Web.Helpers.Test
Microsoft.Web.Http.Data.Test
Microsoft.Web.Mvc.Test
Microsoft.Web.WebPages.OAuth.Test
SPA.Test
System.Json.Test.Integration
System.Json.Test.Unit
System.Net.Http.Formatting.Test.Integration
System.Net.Http.Formatting.Test.Unit
System.Web.Helpers.Test
System.Web.Http.Integration.Test
System.Web.Http.SelfHost.Test
System.Web.Http.Test
System.Web.Http.WebHost.Test
System.Web.Mvc.Test
System.Web.Razor.Test
System.Web.WebPages.Administration.Test
System.Web.WebPages.Deployment.Test
System.Web.WebPages.Razor.Test
System.Web.WebPages.Test
ApplicationParts
Extensions
Helpers
Html
CheckBoxTest.cs
HtmlHelperFactory.cs
HtmlHelperTest.cs
InputHelperTest.cs
RadioButtonTest.cs
SelectHelperTest.cs
TextAreaHelperTest.cs
ValidationHelperTest.cs
Instrumentation
Mvc
Properties
ScopeStorage
TestFiles
Utils
Validation
WebPage
App.config
PreApplicationStartCodeTest.cs
System.Web.WebPages.Test.csproj
packages.config
WebMatrix.Data.Test
WebMatrix.WebData.Test
Settings.StyleCop
tools
.gitattributes
.gitignore
License.txt
README.md
Runtime.msbuild
Runtime.sln
Runtime.xunit
Settings.StyleCop
build.cmd
binary-reference-assemblies
bockbuild
boringssl
cecil
cecil-legacy
corefx
corert
ikdasm
ikvm
linker
nuget-buildtasks
nunit-lite
roslyn-binaries
rx
xunit-binaries
ikvm-native
libgc
llvm
m4
man
mcs
mono
msvc
po
runtime
samples
scripts
support
tools
COPYING.LIB
LICENSE
Makefile.am
Makefile.in
NEWS
README.md
acinclude.m4
aclocal.m4
autogen.sh
code_of_conduct.md
compile
config.guess
config.h.in
config.rpath
config.sub
configure.REMOVED.git-id
configure.ac.REMOVED.git-id
depcomp
install-sh
ltmain.sh.REMOVED.git-id
missing
mkinstalldirs
mono-uninstalled.pc.in
test-driver
winconfig.h
587 lines
21 KiB
C#
587 lines
21 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.Data.Linq;
|
|||
|
using System.Web.WebPages.Html;
|
|||
|
using Moq;
|
|||
|
using Xunit;
|
|||
|
using Assert = Microsoft.TestCommon.AssertEx;
|
|||
|
|
|||
|
namespace System.Web.WebPages.Test
|
|||
|
{
|
|||
|
public class InputHelperTest
|
|||
|
{
|
|||
|
private static readonly IDictionary<string, object> _attributesDictionary = new Dictionary<string, object> { { "baz", "BazValue" } };
|
|||
|
private static readonly object _attributesObject = new { baz = "BazValue" };
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithBinaryArrayValueRendersBase64EncodedValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var result = helper.Hidden("ProductName", new Binary(new byte[] { 23, 43, 53 }));
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal("<input id=\"ProductName\" name=\"ProductName\" type=\"hidden\" value=\"Fys1\" />", result.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithEmptyNameThrows()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act & Assert
|
|||
|
Assert.ThrowsArgumentNullOrEmptyString(() => helper.Hidden(String.Empty), "name");
|
|||
|
Assert.ThrowsArgumentNullOrEmptyString(() => helper.Hidden(null), "name");
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithExplicitValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo", "DefaultFoo");
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""hidden"" value=""DefaultFoo"" />",
|
|||
|
html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithExplicitValueAndAttributesDictionary()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo", "DefaultFoo", new Dictionary<string, object> { { "attr", "attr-val" } });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input attr=""attr-val"" id=""foo"" name=""foo"" type=""hidden"" value=""DefaultFoo"" />",
|
|||
|
html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithExplicitValueAndObjectDictionary()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo", "DefaultFoo", new { attr = "attr-val" });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input attr=""attr-val"" id=""foo"" name=""foo"" type=""hidden"" value=""DefaultFoo"" />",
|
|||
|
html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithExplicitValueNull()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo", value: null);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""hidden"" value="""" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithModelValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
var model = new ModelStateDictionary();
|
|||
|
model.SetModelValue("foo", "bar");
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(model);
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo");
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""hidden"" value=""bar"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithModelValueAndAttributesDictionary()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
var model = new ModelStateDictionary();
|
|||
|
model.SetModelValue("foo", "bar");
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(model);
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo", null, new Dictionary<string, object> { { "attr", "attr-val" } });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input attr=""attr-val"" id=""foo"" name=""foo"" type=""hidden"" value=""bar"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithImplicitValueAndAttributesObject()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
var model = new ModelStateDictionary();
|
|||
|
model.SetModelValue("foo", "bar");
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(model);
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo", null, new { attr = "attr-val" });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input attr=""attr-val"" id=""foo"" name=""foo"" type=""hidden"" value=""bar"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithNameAndValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo", "fooValue");
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""hidden"" value=""fooValue"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithExplicitOverwritesAttributeValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo", "fooValue", new { value = "barValue" });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""hidden"" value=""fooValue"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenWithModelValueOverwritesAttributeValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
var model = new ModelStateDictionary();
|
|||
|
model.SetModelValue("foo", "fooValue");
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(model);
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Hidden("foo", null, new { value = "barValue" });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""hidden"" value=""fooValue"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void HiddenAddsUnobtrusiveValidationAttributes()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
const string fieldName = "name";
|
|||
|
var modelStateDictionary = new ModelStateDictionary();
|
|||
|
var validationHelper = new ValidationHelper(new Mock<HttpContextBase>().Object, modelStateDictionary);
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(modelStateDictionary, validationHelper);
|
|||
|
|
|||
|
// Act
|
|||
|
validationHelper.RequireField(fieldName, "Please specify a valid Name.");
|
|||
|
validationHelper.Add(fieldName, Validator.StringLength(30, errorMessage: "Name cannot exceed {0} characters"));
|
|||
|
var html = helper.Hidden(fieldName, value: null, htmlAttributes: new Dictionary<string, object> { { "data-some-val", "5" } });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input data-some-val=""5"" data-val=""true"" data-val-length=""Name cannot exceed 30 characters"" data-val-length-max=""30"" data-val-required=""Please specify a valid Name."" id=""name"" name=""name"" type=""hidden"" value="""" />",
|
|||
|
html.ToString());
|
|||
|
}
|
|||
|
|
|||
|
// Password
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithEmptyNameThrows()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act & Assert
|
|||
|
Assert.ThrowsArgumentNullOrEmptyString(() => helper.Password(String.Empty), "name");
|
|||
|
Assert.ThrowsArgumentNullOrEmptyString(() => helper.Password(null), "name");
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordDictionaryOverridesImplicitParameters()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo", "Some Value", new { type = "fooType" });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""fooType"" value=""Some Value"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordExplicitParametersOverrideDictionary()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo", "Some Value", new { value = "Another Value", name = "bar" });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""password"" value=""Some Value"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithExplicitValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo", "DefaultFoo", (object)null);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""password"" value=""DefaultFoo"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithExplicitValueAndAttributesDictionary()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo", "DefaultFoo", new { baz = "BazValue" });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""foo"" name=""foo"" type=""password"" value=""DefaultFoo"" />",
|
|||
|
html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithExplicitValueAndAttributesObject()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo", "DefaultFoo", new Dictionary<string, object> { { "baz", "BazValue" } });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""foo"" name=""foo"" type=""password"" value=""DefaultFoo"" />",
|
|||
|
html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithExplicitValueNull()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo", value: (string)null);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""password"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithImplicitValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo");
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""password"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithImplicitValueAndAttributesDictionary()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo", null, _attributesDictionary);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""foo"" name=""foo"" type=""password"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithImplicitValueAndAttributesDictionaryReturnsEmptyValueIfNotFound()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("keyNotFound", null, _attributesDictionary);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""keyNotFound"" name=""keyNotFound"" type=""password"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithImplicitValueAndAttributesObject()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo", null, _attributesObject);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""foo"" name=""foo"" type=""password"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithNameAndValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.Password("foo", "fooValue");
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""password"" value=""fooValue"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordWithNullNameThrows()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act & Assert
|
|||
|
Assert.ThrowsArgumentNullOrEmptyString(() => helper.Password(null), "name");
|
|||
|
Assert.ThrowsArgumentNullOrEmptyString(() => helper.Password(String.Empty), "name");
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void PasswordAddsUnobtrusiveValidationAttributes()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
const string fieldName = "name";
|
|||
|
var modelStateDictionary = new ModelStateDictionary();
|
|||
|
var validationHelper = new ValidationHelper(new Mock<HttpContextBase>().Object, modelStateDictionary);
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(modelStateDictionary, validationHelper);
|
|||
|
|
|||
|
// Act
|
|||
|
validationHelper.RequireField(fieldName, "Please specify a valid Name.");
|
|||
|
validationHelper.Add(fieldName, Validator.StringLength(30, errorMessage: "Name cannot exceed {0} characters"));
|
|||
|
var html = helper.Password(fieldName, value: null, htmlAttributes: new Dictionary<string, object> { { "data-some-val", "5" } });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input data-some-val=""5"" data-val=""true"" data-val-length=""Name cannot exceed 30 characters"" data-val-length-max=""30"" data-val-required=""Please specify a valid Name."" id=""name"" name=""name"" type=""password"" />",
|
|||
|
html.ToString());
|
|||
|
}
|
|||
|
|
|||
|
//Input
|
|||
|
[Fact]
|
|||
|
public void TextBoxDictionaryOverridesImplicitValues()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo", "DefaultFoo", new { type = "fooType" });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""fooType"" value=""DefaultFoo"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxExplicitParametersOverrideDictionaryValues()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo", "DefaultFoo", new { value = "Some other value" });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""text"" value=""DefaultFoo"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithDotReplacementForId()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo.bar.baz", null);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo_bar_baz"" name=""foo.bar.baz"" type=""text"" value="""" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithEmptyNameThrows()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act & Assert
|
|||
|
Assert.ThrowsArgumentNullOrEmptyString(() => helper.TextBox(null), "name");
|
|||
|
Assert.ThrowsArgumentNullOrEmptyString(() => helper.TextBox(String.Empty), "name");
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithExplicitValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo", "DefaultFoo", (object)null);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""text"" value=""DefaultFoo"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithExplicitValueAndAttributesDictionary()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo", "DefaultFoo", _attributesDictionary);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""foo"" name=""foo"" type=""text"" value=""DefaultFoo"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithExplicitValueAndAttributesObject()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo", "DefaultFoo", _attributesObject);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""foo"" name=""foo"" type=""text"" value=""DefaultFoo"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithExplicitValueNull()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
var modelState = new ModelStateDictionary();
|
|||
|
modelState.SetModelValue("foo", "fooModelValue");
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(modelState);
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo", (string)null /* value */, (object)null);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""text"" value=""fooModelValue"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithImplicitValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
var modelState = new ModelStateDictionary();
|
|||
|
modelState.SetModelValue("foo", "fooModelValue");
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(modelState);
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo");
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""text"" value=""fooModelValue"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithImplicitValueAndAttributesDictionary()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
var modelState = new ModelStateDictionary();
|
|||
|
modelState.SetModelValue("foo", "fooModelValue");
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(modelState);
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo", null, _attributesDictionary);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""foo"" name=""foo"" type=""text"" value=""fooModelValue"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithImplicitValueAndAttributesDictionaryReturnsEmptyValueIfNotFound()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
var modelState = new ModelStateDictionary();
|
|||
|
modelState.SetModelValue("foo", "fooModelValue");
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(modelState);
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("keyNotFound", null, _attributesDictionary);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""keyNotFound"" name=""keyNotFound"" type=""text"" value="""" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithImplicitValueAndAttributesObject()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
var modelState = new ModelStateDictionary();
|
|||
|
modelState.SetModelValue("foo", "fooModelValue");
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(modelState);
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo", null, _attributesObject);
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input baz=""BazValue"" id=""foo"" name=""foo"" type=""text"" value=""fooModelValue"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxWithNameAndValue()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create();
|
|||
|
|
|||
|
// Act
|
|||
|
var html = helper.TextBox("foo", "fooValue");
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input id=""foo"" name=""foo"" type=""text"" value=""fooValue"" />", html.ToHtmlString());
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void TextBoxAddsUnobtrusiveValidationAttributes()
|
|||
|
{
|
|||
|
// Arrange
|
|||
|
const string fieldName = "name";
|
|||
|
var modelStateDictionary = new ModelStateDictionary();
|
|||
|
var validationHelper = new ValidationHelper(new Mock<HttpContextBase>().Object, modelStateDictionary);
|
|||
|
HtmlHelper helper = HtmlHelperFactory.Create(modelStateDictionary, validationHelper);
|
|||
|
|
|||
|
// Act
|
|||
|
validationHelper.RequireField(fieldName, "Please specify a valid Name.");
|
|||
|
validationHelper.Add(fieldName, Validator.StringLength(30, errorMessage: "Name cannot exceed {0} characters"));
|
|||
|
var html = helper.TextBox(fieldName, value: null, htmlAttributes: new Dictionary<string, object> { { "data-some-val", "5" } });
|
|||
|
|
|||
|
// Assert
|
|||
|
Assert.Equal(@"<input data-some-val=""5"" data-val=""true"" data-val-length=""Name cannot exceed 30 characters"" data-val-length-max=""30"" data-val-required=""Please specify a valid Name."" id=""name"" name=""name"" type=""text"" value="""" />",
|
|||
|
html.ToString());
|
|||
|
}
|
|||
|
}
|
|||
|
}
|