Add `Html.BeginForm()` and `Html.BeginRouteForm()` tests
- helps w/ #453 since `Html.BeginForm()` wasn't previously tested - provide a `DefaultTemplatesUtilities.GetHtmlHelper()` overload with an `IHtmlGenerator` parameter - update `DefaultTemplateUtilities` to use `DefaultHttpContext` - stop using a mock for this purpose; provides a non-`null` `Request` nit: - `DefaultTemplatesUtilities.GetHtmlHelperForViewData()` -> `...GetHtmlHelper()` for consistency with other overloads
This commit is contained in:
parent
22fafe298c
commit
2982c72547
|
|
@ -2,13 +2,12 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNet.Http;
|
||||
using Microsoft.AspNet.Mvc.ModelBinding;
|
||||
using Microsoft.AspNet.PipelineCore;
|
||||
using Microsoft.AspNet.Routing;
|
||||
using Microsoft.AspNet.Security.DataProtection;
|
||||
using Microsoft.Framework.OptionsModel;
|
||||
|
|
@ -55,13 +54,27 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
provider: CreateModelMetadataProvider());
|
||||
}
|
||||
|
||||
public static HtmlHelper<TModel> GetHtmlHelperForViewData<TModel>(ViewDataDictionary<TModel> viewData)
|
||||
public static HtmlHelper<ObjectTemplateModel> GetHtmlHelper(IHtmlGenerator htmlGenerator)
|
||||
{
|
||||
return GetHtmlHelper(viewData,
|
||||
CreateUrlHelper(),
|
||||
CreateViewEngine(),
|
||||
CreateModelMetadataProvider(),
|
||||
innerHelperWrapper: null);
|
||||
var metadataProvider = CreateModelMetadataProvider();
|
||||
return GetHtmlHelper<ObjectTemplateModel>(
|
||||
new ViewDataDictionary<ObjectTemplateModel>(metadataProvider),
|
||||
CreateUrlHelper(),
|
||||
CreateViewEngine(),
|
||||
metadataProvider,
|
||||
innerHelperWrapper: null,
|
||||
htmlGenerator: htmlGenerator);
|
||||
}
|
||||
|
||||
public static HtmlHelper<TModel> GetHtmlHelper<TModel>(ViewDataDictionary<TModel> viewData)
|
||||
{
|
||||
return GetHtmlHelper(
|
||||
viewData,
|
||||
CreateUrlHelper(),
|
||||
CreateViewEngine(),
|
||||
CreateModelMetadataProvider(),
|
||||
innerHelperWrapper: null,
|
||||
htmlGenerator: null);
|
||||
}
|
||||
|
||||
public static HtmlHelper<TModel> GetHtmlHelper<TModel>(TModel model)
|
||||
|
|
@ -116,7 +129,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var viewData = new ViewDataDictionary<TModel>(provider);
|
||||
viewData.Model = model;
|
||||
|
||||
return GetHtmlHelper(viewData, urlHelper, viewEngine, provider, innerHelperWrapper);
|
||||
return GetHtmlHelper(viewData, urlHelper, viewEngine, provider, innerHelperWrapper, htmlGenerator: null);
|
||||
}
|
||||
|
||||
private static HtmlHelper<TModel> GetHtmlHelper<TModel>(
|
||||
|
|
@ -124,30 +137,11 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
IUrlHelper urlHelper,
|
||||
ICompositeViewEngine viewEngine,
|
||||
IModelMetadataProvider provider,
|
||||
Func<IHtmlHelper, IHtmlHelper> innerHelperWrapper)
|
||||
Func<IHtmlHelper, IHtmlHelper> innerHelperWrapper,
|
||||
IHtmlGenerator htmlGenerator)
|
||||
{
|
||||
var httpContext = new Mock<HttpContext>();
|
||||
httpContext
|
||||
.Setup(o => o.Response)
|
||||
.Returns(Mock.Of<HttpResponse>());
|
||||
httpContext
|
||||
.Setup(o => o.Items)
|
||||
.Returns(new Dictionary<object, object>());
|
||||
|
||||
var actionContext = new ActionContext(httpContext.Object,
|
||||
new RouteData(),
|
||||
new ActionDescriptor());
|
||||
|
||||
var actionBindingContext = new ActionBindingContext(actionContext,
|
||||
provider,
|
||||
Mock.Of<IModelBinder>(),
|
||||
Mock.Of<IValueProvider>(),
|
||||
Mock.Of<IInputFormatterSelector>(),
|
||||
new DataAnnotationsModelValidatorProvider());
|
||||
var actionBindingContextProvider = new Mock<IActionBindingContextProvider>();
|
||||
actionBindingContextProvider
|
||||
.Setup(c => c.GetActionBindingContextAsync(It.IsAny<ActionContext>()))
|
||||
.Returns(Task.FromResult(actionBindingContext));
|
||||
var httpContext = new DefaultHttpContext();
|
||||
var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor());
|
||||
|
||||
var serviceProvider = new Mock<IServiceProvider>();
|
||||
serviceProvider
|
||||
|
|
@ -160,15 +154,27 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
.Setup(s => s.GetService(typeof(IViewComponentHelper)))
|
||||
.Returns(new Mock<IViewComponentHelper>().Object);
|
||||
|
||||
httpContext
|
||||
.Setup(o => o.RequestServices)
|
||||
.Returns(serviceProvider.Object);
|
||||
httpContext.RequestServices = serviceProvider.Object;
|
||||
if (htmlGenerator == null)
|
||||
{
|
||||
var actionBindingContext = new ActionBindingContext(
|
||||
actionContext,
|
||||
provider,
|
||||
Mock.Of<IModelBinder>(),
|
||||
Mock.Of<IValueProvider>(),
|
||||
Mock.Of<IInputFormatterSelector>(),
|
||||
new DataAnnotationsModelValidatorProvider());
|
||||
var actionBindingContextProvider = new Mock<IActionBindingContextProvider>();
|
||||
actionBindingContextProvider
|
||||
.Setup(c => c.GetActionBindingContextAsync(It.IsAny<ActionContext>()))
|
||||
.Returns(Task.FromResult(actionBindingContext));
|
||||
|
||||
var htmlGenerator = new DefaultHtmlGenerator(
|
||||
actionBindingContextProvider.Object,
|
||||
GetAntiForgeryInstance(),
|
||||
provider,
|
||||
urlHelper);
|
||||
htmlGenerator = new DefaultHtmlGenerator(
|
||||
actionBindingContextProvider.Object,
|
||||
GetAntiForgeryInstance(),
|
||||
provider,
|
||||
urlHelper);
|
||||
}
|
||||
|
||||
// TemplateRenderer will Contextualize this transient service.
|
||||
var innerHelper = (IHtmlHelper)new HtmlHelper(htmlGenerator, viewEngine, provider);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input checked=""checked"" id=""Property3"" name=""Property3"" type=""checkbox"" " +
|
||||
@"value=""false"" /><input name=""Property3"" type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
|
||||
// Act
|
||||
var html = helper.CheckBox("Property3",
|
||||
|
|
@ -36,7 +36,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input checked=""checked"" id=""Property3"" name=""Property3"" type=""checkbox"" " +
|
||||
@"value=""false"" /><input name=""Property3"" type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
|
||||
// Act
|
||||
var html = helper.CheckBox("Property3",
|
||||
|
|
@ -69,7 +69,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = "String was not recognized as a valid Boolean.";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
|
||||
// Act & Assert
|
||||
var ex = Assert.Throws<FormatException>(
|
||||
|
|
@ -83,7 +83,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input checked=""checked"" id=""Property1"" name=""Property1"" type=""checkbox"" " +
|
||||
@"value=""true"" /><input name=""Property1"" type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
|
||||
// Act
|
||||
var html = helper.CheckBox("Property1", isChecked: true, htmlAttributes: null);
|
||||
|
|
@ -99,7 +99,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input id=""Property1"" name=""Property1"" type=""checkbox"" value=""true"" />" +
|
||||
@"<input name=""Property1"" type=""hidden"" value=""false"" />";
|
||||
var valueProviderResult = new ValueProviderResult("false", "false", CultureInfo.InvariantCulture);
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
helper.ViewData.ModelState.SetModelValue("Property1", valueProviderResult);
|
||||
|
||||
// Act
|
||||
|
|
@ -116,7 +116,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input data-val=""true"" data-val-required=""The Name field is required."" id=""Name""" +
|
||||
@" name=""Name"" type=""checkbox"" value=""true"" />" +
|
||||
@"<input name=""Name"" type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetModelWithValidationViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetModelWithValidationViewData());
|
||||
|
||||
// Act
|
||||
var html = helper.CheckBox("Name", isChecked: null, htmlAttributes: null);
|
||||
|
|
@ -132,7 +132,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input checked=""checked"" id=""Property1"" name=""Property1"" " +
|
||||
@"Property1-Property3=""Property3ObjValue"" type=""checkbox"" value=""true"" /><input " +
|
||||
@"name=""Property1"" type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper<ViewDataDictionary<TestModel>>(GetTestModelViewData());
|
||||
var htmlAttributes = new { Property1_Property3 = "Property3ObjValue" };
|
||||
|
||||
// Act
|
||||
|
|
@ -204,7 +204,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input checked=""checked"" id=""ComplexProperty_Property1"" name=""ComplexProperty."+
|
||||
@"Property1"" type=""checkbox"" value=""true"" /><input name=""ComplexProperty.Property1""" +
|
||||
@" type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetModelWithValidationViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetModelWithValidationViewData());
|
||||
|
||||
// Act
|
||||
var html = helper.CheckBox("ComplexProperty.Property1", isChecked: null, htmlAttributes: null);
|
||||
|
|
@ -218,7 +218,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = "String was not recognized as a valid Boolean.";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
|
||||
// Act & Assert
|
||||
// "Property2" in ViewData isn't a valid boolean
|
||||
|
|
@ -232,7 +232,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input checked=""checked"" id=""Property3"" name=""Property3"" type=""checkbox"" " +
|
||||
@"value=""false"" /><input name=""Property3"" type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
|
||||
// Act
|
||||
var html = helper.CheckBoxFor(m => m.Property3, new { @checked = "checked", value = "false" });
|
||||
|
|
@ -253,7 +253,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
Model = new ModelWithValidation()
|
||||
};
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(viewDataDictionary);
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(viewDataDictionary);
|
||||
|
||||
// Act
|
||||
var html = helper.CheckBoxFor(m => m.Name, htmlAttributes: null);
|
||||
|
|
@ -269,7 +269,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input id=""Property1"" name=""Property1"" type=""checkbox"" value=""true"" />" +
|
||||
@"<input name=""Property1"" type=""hidden"" value=""false"" />";
|
||||
var viewData = GetTestModelViewData();
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(viewData);
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(viewData);
|
||||
var valueProviderResult = new ValueProviderResult("false", "false", CultureInfo.InvariantCulture);
|
||||
viewData.ModelState.SetModelValue("Property1", valueProviderResult);
|
||||
|
||||
|
|
@ -287,7 +287,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input checked=""checked"" id=""Property1"" name=""Property1"" " +
|
||||
@"Property1-Property3=""Property3ObjValue"" type=""checkbox"" value=""true"" /><input " +
|
||||
@"name=""Property1"" type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
var htmlAttributes = new { Property1_Property3 = "Property3ObjValue" };
|
||||
|
||||
// Act
|
||||
|
|
@ -304,7 +304,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input checked=""checked"" id=""Property1"" name=""Property1"" " +
|
||||
@"Property3=""Property3Value"" type=""checkbox"" value=""true"" /><input " +
|
||||
@"name=""Property1"" type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
var attributes = new Dictionary<string, object> { { "Property3", "Property3Value" } };
|
||||
|
||||
// Act
|
||||
|
|
@ -321,7 +321,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input id=""MyPrefix_Property1"" name=""MyPrefix.Property1"" Property3=""PropValue"" " +
|
||||
@"type=""checkbox"" value=""true"" /><input name=""MyPrefix.Property1"" type=""hidden"" " +
|
||||
@"value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetTestModelViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetTestModelViewData());
|
||||
helper.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";
|
||||
var attributes = new Dictionary<string, object> { { "Property3", "PropValue" } };
|
||||
|
||||
|
|
@ -339,7 +339,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input checked=""checked"" id=""ComplexProperty_Property1"" name=""ComplexProperty." +
|
||||
@"Property1"" type=""checkbox"" value=""true"" /><input name=""ComplexProperty.Property1"" " +
|
||||
@"type=""hidden"" value=""false"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetModelWithValidationViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetModelWithValidationViewData());
|
||||
|
||||
// Act
|
||||
var html = helper.CheckBoxFor(m => m.ComplexProperty.Property1, htmlAttributes: null);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
|||
// Arrange
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper();
|
||||
var enumerableHelper =
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>(null);
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>((IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>)null);
|
||||
|
||||
// Act
|
||||
var displayNameResult = helper.DisplayName(expression: string.Empty);
|
||||
|
|
@ -44,7 +44,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
|||
// Arrange
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper();
|
||||
var enumerableHelper =
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>(null);
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>((IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>)null);
|
||||
|
||||
// Act
|
||||
var displayNameResult = helper.DisplayName("Property1");
|
||||
|
|
@ -92,7 +92,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
|||
var helper = DefaultTemplatesUtilities.GetHtmlHelper();
|
||||
helper.ViewData.ModelMetadata = metadata;
|
||||
var enumerableHelper =
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>(null);
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>((IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>)null);
|
||||
enumerableHelper.ViewData.ModelMetadata = metadata;
|
||||
|
||||
// Act
|
||||
|
|
@ -149,7 +149,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
|||
var helper = DefaultTemplatesUtilities.GetHtmlHelper();
|
||||
helper.ViewData.ModelMetadata.DisplayName = displayName;
|
||||
var enumerableHelper =
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>(null);
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>((IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>)null);
|
||||
enumerableHelper.ViewData.ModelMetadata.DisplayName = displayName;
|
||||
|
||||
// Act
|
||||
|
|
@ -255,7 +255,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
|||
{
|
||||
// Arrange
|
||||
var helper =
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>(null);
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>((IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>)null);
|
||||
|
||||
// Act & Assert
|
||||
var exception = Assert.Throws<InvalidOperationException>(
|
||||
|
|
@ -285,7 +285,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
|||
// Arrange
|
||||
var unknownKey = "this is a dummy parameter value";
|
||||
var helper =
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>(null);
|
||||
DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>((IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>)null);
|
||||
|
||||
// Act
|
||||
var result = helper.DisplayNameFor(model => unknownKey);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,818 @@
|
|||
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.Rendering
|
||||
{
|
||||
/// <summary>
|
||||
/// Tests the <see cref="IHtmlHelper"/>'s <see cref="IHtmlHelper.BeginForm"/> and
|
||||
/// <see cref="IHtmlHelper.BeginRouteForm"/> methods.
|
||||
/// </summary>
|
||||
public class HtmlHelperFormExtensionsTest
|
||||
{
|
||||
private static readonly IEnumerable<string> _actionNames = new List<string> { null, "Details" };
|
||||
private static readonly IEnumerable<string> _controllerNames = new List<string> { null, "Product" };
|
||||
private static readonly IEnumerable<object> _htmlAttributes = new List<object>
|
||||
{
|
||||
null,
|
||||
new { isprint = "false", showreviews = "false" },
|
||||
new Dictionary<string, object> { { "isprint", "false" }, { "showreviews", "true" }, },
|
||||
};
|
||||
private static readonly IEnumerable<FormMethod> _methods = new List<FormMethod>
|
||||
{
|
||||
FormMethod.Get,
|
||||
FormMethod.Post,
|
||||
};
|
||||
private static readonly IEnumerable<string> _routeNames = new List<string> { null, "default" };
|
||||
private static readonly IEnumerable<object> _routeValues = new List<object>
|
||||
{
|
||||
null,
|
||||
new { p1_name = "p1-value" },
|
||||
new Dictionary<string, object> { { "p1-name", "p1-value" }, { "p2-name", "p2-value" } },
|
||||
};
|
||||
|
||||
public static TheoryData<string, string> ActionNameAndControllerNameDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string, string>();
|
||||
foreach (var actionName in _actionNames)
|
||||
{
|
||||
foreach (var controllerName in _controllerNames)
|
||||
{
|
||||
dataSet.Add(actionName, controllerName);
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<string, string, FormMethod> ActionNameControllerNameAndMethodDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string, string, FormMethod>();
|
||||
foreach (var actionName in _actionNames)
|
||||
{
|
||||
foreach (var controllerName in _controllerNames)
|
||||
{
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
dataSet.Add(actionName, controllerName, method);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<string, string, FormMethod, object> ActionNameControllerNameMethodAndHtmlAttributesDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string, string, FormMethod, object>();
|
||||
foreach (var actionName in _actionNames)
|
||||
{
|
||||
foreach (var controllerName in _controllerNames)
|
||||
{
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
foreach (var htmlAttributes in _htmlAttributes)
|
||||
{
|
||||
dataSet.Add(actionName, controllerName, method, htmlAttributes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<string, string, object> ActionNameControllerNameAndRouteValuesDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string, string, object>();
|
||||
foreach (var actionName in _actionNames)
|
||||
{
|
||||
foreach (var controllerName in _controllerNames)
|
||||
{
|
||||
foreach (var routeValues in _routeValues)
|
||||
{
|
||||
dataSet.Add(actionName, controllerName, routeValues);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<string, string, object, FormMethod> ActionNameControllerNameRouteValuesAndMethodDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string, string, object, FormMethod>();
|
||||
foreach (var actionName in _actionNames)
|
||||
{
|
||||
foreach (var controllerName in _controllerNames)
|
||||
{
|
||||
foreach (var routeValues in _routeValues)
|
||||
{
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
dataSet.Add(actionName, controllerName, routeValues, method);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<FormMethod> MethodDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<FormMethod>();
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
dataSet.Add(method);
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<FormMethod, object> MethodAndHtmlAttributesDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<FormMethod, object>();
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
foreach (var htmlAttributes in _htmlAttributes)
|
||||
{
|
||||
dataSet.Add(method, htmlAttributes);
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<string> RouteNameDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string>();
|
||||
foreach (var routeName in _routeNames)
|
||||
{
|
||||
dataSet.Add(routeName);
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<string, FormMethod> RouteNameAndMethodDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string, FormMethod>();
|
||||
foreach (var routeName in _routeNames)
|
||||
{
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
dataSet.Add(routeName, method);
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<string, FormMethod, object> RouteNameMethodAndHtmlAttributesDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string, FormMethod, object>();
|
||||
foreach (var routeName in _routeNames)
|
||||
{
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
foreach (var htmlAttributes in _htmlAttributes)
|
||||
{
|
||||
dataSet.Add(routeName, method, htmlAttributes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<string, object> RouteNameAndRouteValuesDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string, object>();
|
||||
foreach (var routeName in _routeNames)
|
||||
{
|
||||
foreach (var routeValues in _routeValues)
|
||||
{
|
||||
dataSet.Add(routeName, routeValues);
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<string, object, FormMethod> RouteNameRouteValuesAndMethodDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<string, object, FormMethod>();
|
||||
foreach (var routeName in _routeNames)
|
||||
{
|
||||
foreach (var routeValues in _routeValues)
|
||||
{
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
dataSet.Add(routeName, routeValues, method);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
public static TheoryData<object> RouteValuesDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
var dataSet = new TheoryData<object>();
|
||||
foreach (var routeValues in _routeValues)
|
||||
{
|
||||
dataSet.Add(routeValues);
|
||||
}
|
||||
|
||||
return dataSet;
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BeginFormWithNoParameters_CallsHtmlGeneratorWithExpectedValues()
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateForm(
|
||||
htmlHelper.ViewContext,
|
||||
null, // actionName
|
||||
null, // controllerName
|
||||
null, // routeValues
|
||||
FormMethod.Post.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm();
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(MethodDataSet))]
|
||||
public void BeginFormWithMethodParameter_CallsHtmlGeneratorWithExpectedValues(FormMethod method)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateForm(
|
||||
htmlHelper.ViewContext,
|
||||
null, // actionName
|
||||
null, // controllerName
|
||||
null, // routeValues
|
||||
method.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(method);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(MethodAndHtmlAttributesDataSet))]
|
||||
public void BeginFormWithMethodAndHtmlAttributesParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
FormMethod method,
|
||||
object htmlAttributes)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateForm(
|
||||
htmlHelper.ViewContext,
|
||||
null, // actionName
|
||||
null, // controllerName
|
||||
null, // routeValues
|
||||
method.ToString().ToLowerInvariant(),
|
||||
htmlAttributes))
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(method, htmlAttributes);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(RouteValuesDataSet))]
|
||||
public void BeginFormWithRouteValuesParameter_CallsHtmlGeneratorWithExpectedValues(object routeValues)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateForm(
|
||||
htmlHelper.ViewContext,
|
||||
null, // actionName
|
||||
null, // controllerName
|
||||
routeValues,
|
||||
FormMethod.Post.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(routeValues);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(ActionNameAndControllerNameDataSet))]
|
||||
public void BeginFormWithActionNameAndControllerNameParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
string actionName,
|
||||
string controllerName)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateForm(
|
||||
htmlHelper.ViewContext,
|
||||
actionName,
|
||||
controllerName,
|
||||
null, // routeValues
|
||||
FormMethod.Post.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(actionName, controllerName);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(ActionNameControllerNameAndRouteValuesDataSet))]
|
||||
public void BeginFormWithActionNameControllerNameAndRouteValuesParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
string actionName,
|
||||
string controllerName,
|
||||
object routeValues)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateForm(
|
||||
htmlHelper.ViewContext,
|
||||
actionName,
|
||||
controllerName,
|
||||
routeValues,
|
||||
FormMethod.Post.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(actionName, controllerName, routeValues);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(ActionNameControllerNameAndMethodDataSet))]
|
||||
public void BeginFormWithActionNameControllerNameAndMethodParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
string actionName,
|
||||
string controllerName,
|
||||
FormMethod method)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateForm(
|
||||
htmlHelper.ViewContext,
|
||||
actionName,
|
||||
controllerName,
|
||||
null, // routeValues
|
||||
method.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(actionName, controllerName, method);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(ActionNameControllerNameRouteValuesAndMethodDataSet))]
|
||||
public void BeginFormWithActionNameContollerNameRouteValuesAndMethodParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
string actionName,
|
||||
string controllerName,
|
||||
object routeValues,
|
||||
FormMethod method)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateForm(
|
||||
htmlHelper.ViewContext,
|
||||
actionName,
|
||||
controllerName,
|
||||
routeValues,
|
||||
method.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(actionName, controllerName, routeValues, method);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(ActionNameControllerNameMethodAndHtmlAttributesDataSet))]
|
||||
public void BeginFormWithActionNameContollerNameMethodAndHtmlAttributesParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
string actionName,
|
||||
string controllerName,
|
||||
FormMethod method,
|
||||
object htmlAttributes)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateForm(
|
||||
htmlHelper.ViewContext,
|
||||
actionName,
|
||||
controllerName,
|
||||
null, // routeValues
|
||||
method.ToString().ToLowerInvariant(),
|
||||
htmlAttributes))
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(actionName, controllerName, method, htmlAttributes);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(RouteValuesDataSet))]
|
||||
public void BeginRouteFormWithRouteValuesParameter_CallsHtmlGeneratorWithExpectedValues(object routeValues)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateRouteForm(
|
||||
htmlHelper.ViewContext,
|
||||
null, // routeName
|
||||
routeValues,
|
||||
FormMethod.Post.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginRouteForm(routeValues);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(RouteNameDataSet))]
|
||||
public void BeginRouteFormWithRouteNameParameter_CallsHtmlGeneratorWithExpectedValues(string routeName)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateRouteForm(
|
||||
htmlHelper.ViewContext,
|
||||
routeName,
|
||||
null, // routeValues
|
||||
FormMethod.Post.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginRouteForm(routeName);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(RouteNameAndRouteValuesDataSet))]
|
||||
public void BeginRouteFormWithRouteNameAndRouteValuesParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
string routeName,
|
||||
object routeValues)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateRouteForm(
|
||||
htmlHelper.ViewContext,
|
||||
routeName,
|
||||
routeValues,
|
||||
FormMethod.Post.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginRouteForm(routeName, routeValues);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(RouteNameAndMethodDataSet))]
|
||||
public void BeginRouteFormWithRouteNameAndMethodParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
string routeName,
|
||||
FormMethod method)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateRouteForm(
|
||||
htmlHelper.ViewContext,
|
||||
routeName,
|
||||
null, // routeValues
|
||||
method.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginRouteForm(routeName, method);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(RouteNameRouteValuesAndMethodDataSet))]
|
||||
public void BeginRouteFormWithRouteNameRouteValuesAndMethodParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
string routeName,
|
||||
object routeValues,
|
||||
FormMethod method)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateRouteForm(
|
||||
htmlHelper.ViewContext,
|
||||
routeName,
|
||||
routeValues,
|
||||
method.ToString().ToLowerInvariant(),
|
||||
null)) // htmlAttributes
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginRouteForm(routeName, routeValues, method);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(RouteNameMethodAndHtmlAttributesDataSet))]
|
||||
public void BeginRouteFormWithRouteNameMethodAndHtmlAttributesParameters_CallsHtmlGeneratorWithExpectedValues(
|
||||
string routeName,
|
||||
FormMethod method,
|
||||
object htmlAttributes)
|
||||
{
|
||||
// Arrange
|
||||
var tagBuilder = new TagBuilder(tagName: "form");
|
||||
var htmlGenerator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(htmlGenerator.Object);
|
||||
htmlGenerator
|
||||
.Setup(realHelper => realHelper.GenerateRouteForm(
|
||||
htmlHelper.ViewContext,
|
||||
routeName,
|
||||
null, // routeValues
|
||||
method.ToString().ToLowerInvariant(),
|
||||
htmlAttributes))
|
||||
.Returns(tagBuilder)
|
||||
.Verifiable();
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginRouteForm(routeName, method, htmlAttributes);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal("<form>", builder.ToString());
|
||||
htmlGenerator.Verify();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,281 @@
|
|||
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Microsoft.AspNet.Http;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.Rendering
|
||||
{
|
||||
/// <summary>
|
||||
/// Tests the <see cref="IHtmlHelper"/>'s <see cref="IHtmlHelper.BeginForm"/> and
|
||||
/// <see cref="IHtmlHelper.BeginRouteForm"/>methods.
|
||||
/// </summary>
|
||||
public class HtmlHelperFormTest
|
||||
{
|
||||
// actionName, controllerName, routeValues, method, htmlAttributes
|
||||
public static TheoryData<string, string, object, FormMethod, object> BeginFormDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
return new TheoryData<string, string, object, FormMethod, object>
|
||||
{
|
||||
{
|
||||
null, null, null, FormMethod.Get, null
|
||||
},
|
||||
{
|
||||
"Details", "Product", null, FormMethod.Get, null
|
||||
},
|
||||
{
|
||||
"Details", "Product", null, FormMethod.Post, null
|
||||
},
|
||||
{
|
||||
"Details", "Product", new { isprint = "false", showreviews = "false" }, FormMethod.Get, null
|
||||
},
|
||||
{
|
||||
"Details", "Product", new { isprint = "false", showreviews = "true" }, FormMethod.Post, null
|
||||
},
|
||||
{
|
||||
"Details", "Product", new { isprint = "true", showreviews = "false" }, FormMethod.Get,
|
||||
new { p1_name = "p1-value" }
|
||||
},
|
||||
{
|
||||
"Details", "Product", new { isprint = "true", showreviews = "true" }, FormMethod.Post,
|
||||
new { p1_name = "p1-value" }
|
||||
},
|
||||
{
|
||||
"Details", "Product",
|
||||
new Dictionary<string, object> { { "isprint", "false" }, { "showreviews", "false" }, },
|
||||
FormMethod.Get,
|
||||
new Dictionary<string, object> { { "p1-name", "p1-value" }, { "p2-name", "p2-value" } }
|
||||
},
|
||||
{
|
||||
"Details", "Product",
|
||||
new Dictionary<string, object> { { "isprint", "false" }, { "showreviews", "false" }, },
|
||||
FormMethod.Post,
|
||||
new Dictionary<string, object> { { "p1-name", "p1-value" }, { "p2-name", "p2-value" } }
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// routeName, routeValues, method, htmlAttributes
|
||||
public static TheoryData<string, object, FormMethod, object> BeginRouteFormDataSet
|
||||
{
|
||||
get
|
||||
{
|
||||
return new TheoryData<string, object, FormMethod, object>
|
||||
{
|
||||
{
|
||||
null, null, FormMethod.Get, null
|
||||
},
|
||||
{
|
||||
null, null, FormMethod.Post, null
|
||||
},
|
||||
{
|
||||
"default", null, FormMethod.Get, null
|
||||
},
|
||||
{
|
||||
"default", null, FormMethod.Post, null
|
||||
},
|
||||
{
|
||||
"default", new { isprint = "false", showreviews = "false" }, FormMethod.Get, null
|
||||
},
|
||||
{
|
||||
"default", new { isprint = "false", showreviews = "true" }, FormMethod.Post, null
|
||||
},
|
||||
{
|
||||
"default", new { isprint = "true", showreviews = "false" }, FormMethod.Get,
|
||||
new { p1 = "p1-value" }
|
||||
},
|
||||
{
|
||||
"default", new { isprint = "true", showreviews = "true" }, FormMethod.Post,
|
||||
new { p1 = "p1-value" }
|
||||
},
|
||||
{
|
||||
"default",
|
||||
new Dictionary<string, object> { { "isprint", "false" }, { "showreviews", "false" }, },
|
||||
FormMethod.Get,
|
||||
new Dictionary<string, object> { { "p1-name", "p1-value" }, { "p2-name", "p2-value" } }
|
||||
},
|
||||
{
|
||||
"default",
|
||||
new Dictionary<string, object> { { "isprint", "false" }, { "showreviews", "false" }, },
|
||||
FormMethod.Post,
|
||||
new Dictionary<string, object> { { "p1-name", "p1-value" }, { "p2-name", "p2-value" } }
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BeginForm_RendersExpectedValues_WithDefaultArguments()
|
||||
{
|
||||
// Arrange
|
||||
var pathBase = "/Base";
|
||||
var path = "/Path";
|
||||
var queryString = "?query=string";
|
||||
var expectedAction = pathBase + path + queryString;
|
||||
var expectedStartTag = string.Format("<form action=\"{0}\" method=\"post\">", expectedAction);
|
||||
|
||||
// IUrlHelper should not be used in this scenario.
|
||||
var urlHelper = new Mock<IUrlHelper>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(urlHelper.Object);
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
Assert.NotNull(htmlHelper.ViewContext.HttpContext);
|
||||
var request = htmlHelper.ViewContext.HttpContext.Request;
|
||||
Assert.NotNull(request);
|
||||
|
||||
// Set properties the IHtmlGenerator implementation should use in this scenario.
|
||||
request.PathBase = new PathString(pathBase);
|
||||
request.Path = new PathString(path);
|
||||
request.QueryString = new QueryString(queryString);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(
|
||||
actionName: null,
|
||||
controllerName: null,
|
||||
routeValues: null,
|
||||
method: FormMethod.Post,
|
||||
htmlAttributes: null);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal(expectedStartTag, builder.ToString());
|
||||
urlHelper.Verify();
|
||||
|
||||
builder.Clear();
|
||||
mvcForm.Dispose();
|
||||
Assert.Equal("</form>", builder.ToString());
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(BeginFormDataSet))]
|
||||
public void BeginForm_RendersExpectedValues(
|
||||
string actionName,
|
||||
string controllerName,
|
||||
object routeValues,
|
||||
FormMethod method,
|
||||
object htmlAttributes)
|
||||
{
|
||||
// Arrange
|
||||
var expectedAction = "http://localhost/Hello/World";
|
||||
var expectedStartTag = string.Format(
|
||||
"<form action=\"{0}\" method=\"{1}\"{2}>",
|
||||
expectedAction,
|
||||
method.ToString().ToLowerInvariant(),
|
||||
GetHtmlAttributesAsString(htmlAttributes));
|
||||
|
||||
var urlHelper = new Mock<IUrlHelper>(MockBehavior.Strict);
|
||||
urlHelper
|
||||
.Setup(realHelper => realHelper.Action(
|
||||
actionName,
|
||||
controllerName,
|
||||
routeValues,
|
||||
null, // protocol
|
||||
null, // host
|
||||
null)) // fragment
|
||||
.Returns(expectedAction)
|
||||
.Verifiable();
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(urlHelper.Object);
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginForm(actionName, controllerName, routeValues, method, htmlAttributes);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal(expectedStartTag, builder.ToString());
|
||||
urlHelper.Verify();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(BeginRouteFormDataSet))]
|
||||
public void BeginRouteForm_RendersExpectedValues(
|
||||
string routeName,
|
||||
object routeValues,
|
||||
FormMethod method,
|
||||
object htmlAttributes)
|
||||
{
|
||||
// Arrange
|
||||
var expectedAction = "http://localhost/Hello/World";
|
||||
var expectedStartTag = string.Format(
|
||||
"<form action=\"{0}\" method=\"{1}\"{2}>",
|
||||
expectedAction,
|
||||
method.ToString().ToLowerInvariant(),
|
||||
GetHtmlAttributesAsString(htmlAttributes));
|
||||
|
||||
var urlHelper = new Mock<IUrlHelper>(MockBehavior.Strict);
|
||||
urlHelper
|
||||
.Setup(realHelper => realHelper.RouteUrl(
|
||||
routeName,
|
||||
routeValues,
|
||||
null, // protocol
|
||||
null, // host
|
||||
null)) // fragment
|
||||
.Returns(expectedAction)
|
||||
.Verifiable();
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(urlHelper.Object);
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
var mvcForm = htmlHelper.BeginRouteForm(routeName, routeValues, method, htmlAttributes);
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(mvcForm);
|
||||
Assert.Equal(expectedStartTag, builder.ToString());
|
||||
urlHelper.Verify();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EndForm_RendersExpectedValues()
|
||||
{
|
||||
// Arrange
|
||||
// IUrlHelper should not be used in this scenario.
|
||||
var urlHelper = new Mock<IUrlHelper>(MockBehavior.Strict);
|
||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(urlHelper.Object);
|
||||
|
||||
// Guards
|
||||
Assert.NotNull(htmlHelper.ViewContext);
|
||||
var writer = htmlHelper.ViewContext.Writer as StringWriter;
|
||||
Assert.NotNull(writer);
|
||||
var builder = writer.GetStringBuilder();
|
||||
Assert.NotNull(builder);
|
||||
|
||||
// Act
|
||||
htmlHelper.EndForm();
|
||||
|
||||
// Assert
|
||||
Assert.Equal("</form>", builder.ToString());
|
||||
urlHelper.Verify();
|
||||
}
|
||||
|
||||
private string GetHtmlAttributesAsString(object htmlAttributes)
|
||||
{
|
||||
var dictionary = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
|
||||
return string.Join(
|
||||
string.Empty,
|
||||
dictionary.Select(keyValue => string.Format(" {0}=\"{1}\"", keyValue.Key, keyValue.Value)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -49,7 +49,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
public void HiddenWithArgumentValueAndAttributes_UsesArgumentValue(object attributes, string expected)
|
||||
{
|
||||
// Arrange
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.Model.Property1 = "should-not-be-used";
|
||||
|
||||
// Act
|
||||
|
|
@ -65,7 +65,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value=""explicit-value"" />";
|
||||
var attributes = new { value = "attribute-value" };
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithNullModelAndNonNullViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithNullModelAndNonNullViewData());
|
||||
helper.ViewData.Clear();
|
||||
|
||||
// Act
|
||||
|
|
@ -82,7 +82,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input id=""Property1"" key=""value"" name=""Property1"" type=""hidden"" " +
|
||||
@"value=""test"" />";
|
||||
var attributes = new { key = "value" };
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithNullModelAndNonNullViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithNullModelAndNonNullViewData());
|
||||
|
||||
// Act
|
||||
var result = helper.Hidden("Property1", "test", attributes);
|
||||
|
|
@ -98,7 +98,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
var expected = @"<input data-key=""value"" id=""Property1"" name=""Property1"" type=""hidden"" " +
|
||||
@"value=""test"" />";
|
||||
var attributes = new Dictionary<string, object> { { "data-key", "value" } };
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithNullModelAndNonNullViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithNullModelAndNonNullViewData());
|
||||
|
||||
// Act
|
||||
var result = helper.Hidden("Property1", "test", attributes);
|
||||
|
|
@ -112,7 +112,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value=""ModelStateValue"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.Model.Property1 = "test-value";
|
||||
|
||||
// Act
|
||||
|
|
@ -127,7 +127,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value=""explicit-value"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.ModelState.Clear();
|
||||
helper.ViewData.Model.Property1 = "property-value";
|
||||
|
||||
|
|
@ -143,7 +143,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value=""view-data-val"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.ModelState.Clear();
|
||||
helper.ViewData.Model.Property1 = "property-value";
|
||||
|
||||
|
|
@ -159,7 +159,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value=""property-value"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.ModelState.Clear();
|
||||
helper.ViewData.Clear();
|
||||
helper.ViewData.Model.Property1 = "property-value";
|
||||
|
|
@ -176,7 +176,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value="""" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.ModelState.Clear();
|
||||
helper.ViewData.Clear();
|
||||
helper.ViewData.Model.Property1 = null;
|
||||
|
|
@ -194,7 +194,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input baz=""BazValue"" id=""keyNotFound"" name=""keyNotFound"" type=""hidden"" " +
|
||||
@"value="""" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var attributes = new Dictionary<string, object> { { "baz", "BazValue" } };
|
||||
|
||||
// Act
|
||||
|
|
@ -210,7 +210,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input id=""MyPrefix_Property1"" name=""MyPrefix.Property1"" type=""hidden"" " +
|
||||
@"value=""PropValue"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";
|
||||
|
||||
// Act
|
||||
|
|
@ -225,7 +225,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""MyPrefix"" name=""MyPrefix"" type=""hidden"" value=""fooValue"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";
|
||||
|
||||
// Act
|
||||
|
|
@ -241,7 +241,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input id=""MyPrefix$Property1"" name=""MyPrefix.Property1"" type=""hidden"" " +
|
||||
@"value=""modelstate-with-prefix"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";
|
||||
helper.IdAttributeDotReplacement = "$";
|
||||
helper.ViewData.ModelState.Clear();
|
||||
|
|
@ -262,7 +262,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input id=""MyPrefix$Property1"" name=""MyPrefix.Property1"" type=""hidden"" " +
|
||||
@"value=""vdd-with-prefix"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";
|
||||
helper.IdAttributeDotReplacement = "$";
|
||||
helper.ViewData.ModelState.Clear();
|
||||
|
|
@ -282,7 +282,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
public void HiddenWithEmptyNameAndPrefixThrows()
|
||||
{
|
||||
// Arrange
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var attributes = new Dictionary<string, object>
|
||||
{
|
||||
{ "class", "some-class"}
|
||||
|
|
@ -299,7 +299,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input baz=""BazValue"" class=""input-validation-error some-class"" id=""Property1""" +
|
||||
@" name=""Property1"" type=""hidden"" value=""ModelStateValue"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithErrors());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithErrors());
|
||||
var attributes = new Dictionary<string, object>
|
||||
{
|
||||
{ "baz", "BazValue" },
|
||||
|
|
@ -319,7 +319,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input data-val=""true"" data-val-required=""The Property2 field is required."" " +
|
||||
@"id=""Property2"" name=""Property2"" type=""hidden"" value="""" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
|
||||
// Act
|
||||
var result = helper.Hidden("Property2", value: null, htmlAttributes: null);
|
||||
|
|
@ -364,7 +364,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
viewData["Property3[height]"] = "Prop3Value";
|
||||
viewData["Property4.Property5"] = "Prop5Value";
|
||||
viewData["Property4.Property6[0]"] = "Prop6Value";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(viewData);
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(viewData);
|
||||
var attributes = new Dictionary<string, object> { { "data-test", "val" } };
|
||||
|
||||
// Act
|
||||
|
|
@ -403,7 +403,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
viewData["Property3[height]"] = "Prop3Value";
|
||||
viewData["Property4.Property5"] = "Prop5Value";
|
||||
viewData["Property4.Property6[0]"] = "Prop6Value";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(viewData);
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(viewData);
|
||||
helper.IdAttributeDotReplacement = "$$";
|
||||
var attributes = new Dictionary<string, object> { { "data-test", "val" } };
|
||||
|
||||
|
|
@ -419,7 +419,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Bytes"" name=""Bytes"" type=""hidden"" value=""Fys1"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.Model.Bytes = new byte[] { 23, 43, 53 };
|
||||
|
||||
// Act
|
||||
|
|
@ -434,7 +434,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
public void HiddenForWithAttributes_GeneratesExpectedValue(object htmlAttributes, string expected)
|
||||
{
|
||||
// Arrange
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.Model.Property1 = "test";
|
||||
|
||||
// Act
|
||||
|
|
@ -449,7 +449,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value=""ModelStateValue"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.Model.Property1 = "DefaultValue";
|
||||
|
||||
// Act
|
||||
|
|
@ -464,7 +464,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value=""PropertyValue"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.ModelState.Clear();
|
||||
helper.ViewData.Model.Property1 = "PropertyValue";
|
||||
|
||||
|
|
@ -480,7 +480,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value="""" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.Model.Property1 = null;
|
||||
helper.ViewData.ModelState.Clear();
|
||||
|
||||
|
|
@ -496,7 +496,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" key=""value"" name=""Property1"" type=""hidden"" value="""" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithNullModelAndNonNullViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithNullModelAndNonNullViewData());
|
||||
var attributes = new Dictionary<string, object> { { "key", "value" } };
|
||||
|
||||
// Act
|
||||
|
|
@ -513,7 +513,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input id=""MyPrefix_Property1"" name=""MyPrefix.Property1"" type=""hidden"" " +
|
||||
@"value=""propValue"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.Model.Property1 = "propValue";
|
||||
helper.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";
|
||||
|
||||
|
|
@ -530,7 +530,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input id=""MyPrefix$Property1"" name=""MyPrefix.Property1"" type=""hidden"" " +
|
||||
@"value=""modelstate-with-prefix"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithModelStateAndModelAndViewDataValues());
|
||||
helper.ViewData.Model.Property1 = "propValue";
|
||||
helper.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";
|
||||
helper.IdAttributeDotReplacement = "$";
|
||||
|
|
@ -552,7 +552,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input baz=""BazValue"" class=""input-validation-error some-class"" id=""Property1"" " +
|
||||
@"name=""Property1"" type=""hidden"" value=""ModelStateValue"" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithErrors());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithErrors());
|
||||
var attributes = new Dictionary<string, object>
|
||||
{
|
||||
{ "baz", "BazValue" },
|
||||
|
|
@ -572,7 +572,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
// Arrange
|
||||
var expected = @"<input data-val=""true"" data-val-required=""The Property2 field is required."" " +
|
||||
@"id=""Property2"" name=""Property2"" type=""hidden"" value="""" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithErrors());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithErrors());
|
||||
|
||||
// Act
|
||||
var result = helper.HiddenFor(m => m.Property2, htmlAttributes: null);
|
||||
|
|
@ -628,7 +628,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
viewData.Model.Property4.Property5 = "ModelProp5Val";
|
||||
viewData.Model.Property4.Property6.Add("ModelProp6Val");
|
||||
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(viewData);
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(viewData);
|
||||
var attributes = new Dictionary<string, object>
|
||||
{
|
||||
{ "data-val", "true" },
|
||||
|
|
@ -679,7 +679,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
viewData.ModelState.Add("pre.Property4.Property5", GetModelState("Prop5Val"));
|
||||
viewData.ModelState.Add("pre.Property4.Property6[0]", GetModelState("Prop6Val"));
|
||||
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(viewData);
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(viewData);
|
||||
viewData.TemplateInfo.HtmlFieldPrefix = "pre";
|
||||
var attributes = new { data_val = "true", value = "attr-val" };
|
||||
|
||||
|
|
@ -695,7 +695,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
|||
{
|
||||
// Arrange
|
||||
var expected = @"<input id=""Property1"" name=""Property1"" type=""hidden"" value="""" />";
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelperForViewData(GetViewDataWithNullModelAndNonNullViewData());
|
||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(GetViewDataWithNullModelAndNonNullViewData());
|
||||
var attributes = new Dictionary<string, object>
|
||||
{
|
||||
{ "value", "AttrValue" }
|
||||
|
|
|
|||
Loading…
Reference in New Issue