public void EditorFor_CallsExpectedHtmlHelper_TemplateHint(string templateName, string expectedResult) { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "True" }; var viewEngine = new Mock <ICompositeViewEngine>(); viewEngine .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>())) .Returns(ViewEngineResult.NotFound("", Enumerable.Empty <string>())); var helper = DefaultTemplatesUtilities.GetHtmlHelper( model, viewEngine.Object, innerHelper => new StubbyHtmlHelper(innerHelper)); var metadata = helper.ViewData.ModelMetadata.Properties.First(m => string.Equals(m.PropertyName, "Property1")); metadata.TemplateHint = templateName; // TemplateBuilder sets FormattedModelValue before calling TemplateRenderer and it's used in most templates. helper.ViewData.TemplateInfo.FormattedModelValue = "Formatted string"; // Act var result = helper.EditorFor( anotherModel => anotherModel.Property1, templateName, htmlFieldName: null, additionalViewData: null); // Assert Assert.Equal(expectedResult, result.ToString()); }
public void ObjectTemplateEditsSimplePropertiesOnObjectByDefault() { var expected = "<div class=\"editor-label\"><label for=\"Property1\">Property1</label></div>" + Environment.NewLine + "<div class=\"editor-field\">Model = p1, ModelType = System.String, PropertyName = Property1," + " SimpleDisplayText = p1 " + "<span class=\"field-validation-valid\" data-valmsg-for=\"Property1\" data-valmsg-replace=\"true\">" + "</span></div>" + Environment.NewLine + "<div class=\"editor-label\"><label for=\"Property2\">Property2</label></div>" + Environment.NewLine + "<div class=\"editor-field\">Model = (null), ModelType = System.String, PropertyName = Property2," + " SimpleDisplayText = (null) " + "<span class=\"field-validation-valid\" data-valmsg-for=\"Property2\" data-valmsg-replace=\"true\">" + "</span></div>" + Environment.NewLine; // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "p1", Property2 = null }; var html = DefaultTemplatesUtilities.GetHtmlHelper(model); // Act var result = DefaultEditorTemplates.ObjectTemplate(html); // Assert Assert.Equal(expected, result); }
public void ObjectTemplateDisplaysSimpleDisplayTextWithNonNullModelTemplateDepthGreaterThanOne( string simpleDisplayText, bool htmlEncode, string expectedResult) { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel(); var html = DefaultTemplatesUtilities.GetHtmlHelper(model); var metadata = new EmptyModelMetadataProvider() .GetMetadataForType(() => model, typeof(DefaultTemplatesUtilities.ObjectTemplateModel)); metadata.HtmlEncode = htmlEncode; metadata.NullDisplayText = "Null Display Text"; metadata.SimpleDisplayText = simpleDisplayText; html.ViewData.ModelMetadata = metadata; html.ViewData.TemplateInfo.AddVisited("foo"); html.ViewData.TemplateInfo.AddVisited("bar"); // Act var result = DefaultEditorTemplates.ObjectTemplate(html); // Assert Assert.Equal(expectedResult, result); }
public void ObjectTemplate_HonoursHideSurroundingHtml() { // Arrange var expected = "Model = p1, ModelType = System.String, PropertyName = Property1, SimpleDisplayText = p1" + "<div class=\"HtmlEncode[[editor-label]]\"><label for=\"HtmlEncode[[Property2]]\">HtmlEncode[[Property2]]</label></div>" + Environment.NewLine + "<div class=\"HtmlEncode[[editor-field]]\">" + "Model = (null), ModelType = System.String, PropertyName = Property2, SimpleDisplayText = (null) " + "<span class=\"HtmlEncode[[field-validation-valid]]\" data-valmsg-for=\"HtmlEncode[[Property2]]\" data-valmsg-replace=\"HtmlEncode[[true]]\">" + "</span></div>" + Environment.NewLine; var provider = new TestModelMetadataProvider(); provider.ForProperty <DefaultTemplatesUtilities.ObjectTemplateModel>("Property1").DisplayDetails(dd => { dd.HideSurroundingHtml = true; }); var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "p1", Property2 = null }; var html = DefaultTemplatesUtilities.GetHtmlHelper(model, provider: provider); // Act var result = DefaultEditorTemplates.ObjectTemplate(html); // Assert Assert.Equal(expected, result); }
public void DisplayFor_DoesNotWrapExceptionThrowsDuringViewRendering() { // Arrange var expectedMessage = "my exception message"; var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Test string", }; var view = new Mock <IView>(); view.Setup(v => v.RenderAsync(It.IsAny <ViewContext>())) .Returns(Task.Run(() => { throw new ArgumentException(expectedMessage); })); var viewEngine = new Mock <ICompositeViewEngine>(); viewEngine .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>())) .Returns(ViewEngineResult.Found("test-view", view.Object)); var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object); helper.ViewData["Property1"] = "ViewData string"; // Act and Assert var ex = Assert.Throws <ArgumentException>(() => helper.DisplayFor(m => m.Property1)); Assert.Equal(expectedMessage, ex.Message); }
public void ObjectTemplateDisplaysSimpleDisplayTextWithNonNullModelTemplateDepthGreaterThanOne( string simpleDisplayText, bool htmlEncode, string expectedResult) { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel() { Property1 = simpleDisplayText, }; var provider = new TestModelMetadataProvider(); provider.ForType <DefaultTemplatesUtilities.ObjectTemplateModel>().DisplayDetails(dd => { dd.HtmlEncode = htmlEncode; dd.NullDisplayText = "Null Display Text"; dd.SimpleDisplayProperty = "Property1"; }); var html = DefaultTemplatesUtilities.GetHtmlHelper(model, provider: provider); html.ViewData.TemplateInfo.AddVisited("foo"); html.ViewData.TemplateInfo.AddVisited("bar"); // Act var result = DefaultEditorTemplates.ObjectTemplate(html); // Assert Assert.Equal(expectedResult, result); }
public void ObjectTemplate_HonoursHideSurroundingHtml() { // Arrange var expected = "Model = p1, ModelType = System.String, PropertyName = Property1, SimpleDisplayText = p1" + "<div class=\"display-label\">Property2</div>" + Environment.NewLine + "<div class=\"display-field\">Model = (null), ModelType = System.String, PropertyName = Property2," + " SimpleDisplayText = (null)</div>" + Environment.NewLine; var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "p1", Property2 = null }; var provider = new TestModelMetadataProvider(); provider.ForProperty <DefaultTemplatesUtilities.ObjectTemplateModel>("Property1").DisplayDetails(dd => { dd.HideSurroundingHtml = true; }); var html = DefaultTemplatesUtilities.GetHtmlHelper(model, provider); // Act var result = DefaultDisplayTemplates.ObjectTemplate(html); // Assert Assert.Equal(expected, result); }
public void ObjectTemplate_HonoursHideSurroundingHtml() { // Arrange var expected = "Model = p1, ModelType = System.String, PropertyName = Property1, SimpleDisplayText = p1" + "<div class=\"editor-label\"><label for=\"Property2\">Property2</label></div>" + Environment.NewLine + "<div class=\"editor-field\">" + "Model = (null), ModelType = System.String, PropertyName = Property2, SimpleDisplayText = (null) " + "<span class=\"field-validation-valid\" data-valmsg-for=\"Property2\" data-valmsg-replace=\"true\">" + "</span></div>" + Environment.NewLine; var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "p1", Property2 = null }; var html = DefaultTemplatesUtilities.GetHtmlHelper(model); var metadata = html.ViewData.ModelMetadata.Properties.First(m => string.Equals(m.PropertyName, "Property1")); metadata.HideSurroundingHtml = true; // Act var result = DefaultEditorTemplates.ObjectTemplate(html); // Assert Assert.Equal(expected, result); }
public void Display_FindsModel_IfNoViewDataMember() { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" }; var viewEngine = new Mock <ICompositeViewEngine>(); viewEngine .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>())) .Returns(ViewEngineResult.NotFound("", Enumerable.Empty <string>())); var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object); // Act var result = helper.Display("Property1"); // Assert Assert.Equal("Model string", result.ToString()); }
public void ObjectTemplateDisplaysSimpleDisplayTextWhenTemplateDepthGreaterThanOne() { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel(); var html = DefaultTemplatesUtilities.GetHtmlHelper(model); var metadata = new EmptyModelMetadataProvider() .GetMetadataForType(() => model, typeof(DefaultTemplatesUtilities.ObjectTemplateModel)); metadata.SimpleDisplayText = "Simple Display Text"; html.ViewData.ModelMetadata = metadata; html.ViewData.TemplateInfo.AddVisited("foo"); html.ViewData.TemplateInfo.AddVisited("bar"); // Act var result = DefaultDisplayTemplates.ObjectTemplate(html); // Assert Assert.Equal(metadata.SimpleDisplayText, result); }
public void Editor_CallsExpectedHtmlHelper_DataTypeName(string templateName, string expectedResult) { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "True" }; var viewEngine = new Mock <ICompositeViewEngine>(); viewEngine .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>())) .Returns(ViewEngineResult.NotFound("", Enumerable.Empty <string>())); var provider = new TestModelMetadataProvider(); provider.ForProperty <DefaultTemplatesUtilities.ObjectTemplateModel>("Property1").DisplayDetails(dd => { dd.DataTypeName = templateName; }); var helper = DefaultTemplatesUtilities.GetHtmlHelper( model, null, viewEngine.Object, provider, innerHelper => new StubbyHtmlHelper(innerHelper)); helper.ViewData["Property1"] = "True"; // TemplateBuilder sets FormattedModelValue before calling TemplateRenderer and it's used in most templates. helper.ViewData.TemplateInfo.FormattedModelValue = "Formatted string"; // Act var result = helper.Editor( "Property1", templateName, htmlFieldName: null, additionalViewData: null); // Assert Assert.Equal(expectedResult, result.ToString()); }
public void Editor_FindsModel_IfNoViewDataMember() { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" }; var viewEngine = new Mock <ICompositeViewEngine>(); viewEngine .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>())) .Returns(ViewEngineResult.NotFound("", Enumerable.Empty <string>())); var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object); // Act var result = helper.Editor("Property1"); // Assert Assert.Equal( "<input class=\"text-box single-line\" id=\"Property1\" name=\"Property1\" type=\"text\" value=\"Model string\" />", result.ToString()); }
public void DisplayFor_FindsModel() { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" }; var viewEngine = new Mock <ICompositeViewEngine>(); viewEngine .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>())) .Returns(ViewEngineResult.NotFound("", Enumerable.Empty <string>())); var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object); helper.ViewData["Property1"] = "ViewData string"; // Act var result = helper.DisplayFor(m => m.Property1); // Assert Assert.Equal("HtmlEncode[[Model string]]", HtmlContentUtilities.HtmlContentToString(result)); }
public void DisplayFor_FindsModel_EvenIfNullOrEmpty(string propertyValue) { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = propertyValue, }; var viewEngine = new Mock <ICompositeViewEngine>(); viewEngine .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>())) .Returns(ViewEngineResult.NotFound("", Enumerable.Empty <string>())); var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object); helper.ViewData["Property1"] = "ViewData string"; // Act var result = helper.DisplayFor(m => m.Property1); // Assert Assert.Empty(result.ToString()); }
public void ObjectTemplateDisplaysSimplePropertiesOnObjectByDefault() { var expected = "<div class=\"display-label\">Property1</div>" + Environment.NewLine + "<div class=\"display-field\">Model = p1, ModelType = System.String, PropertyName = Property1," + " SimpleDisplayText = p1</div>" + Environment.NewLine + "<div class=\"display-label\">Property2</div>" + Environment.NewLine + "<div class=\"display-field\">Model = (null), ModelType = System.String, PropertyName = Property2," + " SimpleDisplayText = (null)</div>" + Environment.NewLine; // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "p1", Property2 = null }; var html = DefaultTemplatesUtilities.GetHtmlHelper(model); // Act var result = DefaultDisplayTemplates.ObjectTemplate(html); // Assert Assert.Equal(expected, result); }
public void EditorFor_FindsModel_EvenIfNullOrEmpty(string propertyValue) { // Arrange var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = propertyValue, }; var viewEngine = new Mock <ICompositeViewEngine>(); viewEngine .Setup(v => v.FindPartialView(It.IsAny <ActionContext>(), It.IsAny <string>())) .Returns(ViewEngineResult.NotFound("", Enumerable.Empty <string>())); var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object); helper.ViewData["Property1"] = "ViewData string"; // Act var result = helper.EditorFor(m => m.Property1); // Assert Assert.Equal( "<input class=\"HtmlEncode[[text-box single-line]]\" id=\"HtmlEncode[[Property1]]\" name=\"HtmlEncode[[Property1]]\" type=\"HtmlEncode[[text]]\" value=\"\" />", result.ToString()); }
public void ObjectTemplate_HonoursHideSurroundingHtml() { // Arrange var expected = "Model = p1, ModelType = System.String, PropertyName = Property1, SimpleDisplayText = p1" + "<div class=\"display-label\">Property2</div>" + Environment.NewLine + "<div class=\"display-field\">Model = (null), ModelType = System.String, PropertyName = Property2," + " SimpleDisplayText = (null)</div>" + Environment.NewLine; var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "p1", Property2 = null }; var html = DefaultTemplatesUtilities.GetHtmlHelper(model); var metadata = html.ViewData.ModelMetadata.Properties.First(m => string.Equals(m.PropertyName, "Property1")); metadata.HideSurroundingHtml = true; // Act var result = DefaultDisplayTemplates.ObjectTemplate(html); // Assert Assert.Equal(expected, result); }