// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // 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.Linq; using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.Rendering; using Moq; using Xunit; namespace Microsoft.AspNet.Mvc.Core.Test { public class DefaultDisplayTemplateTests { [Fact] public void ObjectTemplateDisplaysSimplePropertiesOnObjectByDefault() { var expected = "
Property1
" + Environment.NewLine + "
Model = p1, ModelType = System.String, PropertyName = Property1," + " SimpleDisplayText = p1
" + Environment.NewLine + "
Property2
" + Environment.NewLine + "
Model = (null), ModelType = System.String, PropertyName = Property2," + " SimpleDisplayText = (null)
" + 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); } [Fact] public void ObjectTemplateDisplaysNullDisplayTextWhenObjectIsNull() { // Arrange var html = DefaultTemplatesUtilities.GetHtmlHelper(null); var metadata = new EmptyModelMetadataProvider() .GetMetadataForType(null, typeof(DefaultTemplatesUtilities.ObjectTemplateModel)); metadata.NullDisplayText = "(null value)"; html.ViewData.ModelMetadata = metadata; // Act var result = DefaultDisplayTemplates.ObjectTemplate(html); // Assert Assert.Equal(metadata.NullDisplayText, result); } [Fact] 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); } [Fact] public void ObjectTemplate_IgnoresPropertiesWith_ScaffoldColumnFalse() { // Arrange var expected = @"
Property1
Property3
"; var model = new DefaultTemplatesUtilities.ObjectWithScaffoldColumn(); var viewEngine = new Mock(); viewEngine.Setup(v => v.FindPartialView(It.IsAny>(), It.IsAny())) .Returns(ViewEngineResult.NotFound("", Enumerable.Empty())); var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object); // Act var result = DefaultDisplayTemplates.ObjectTemplate(htmlHelper); // Assert Assert.Equal(expected, result); } } }