From d5a57c505cfcc2f2b5fb2f122c9e3fd0eccae59e Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 7 Mar 2016 16:53:57 +0100 Subject: [PATCH] adds RenderModelBinderTests --- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 + .../Web/Mvc/RenderModelBinderTests.cs | 84 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 src/Umbraco.Tests/Web/Mvc/RenderModelBinderTests.cs diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index e553be9b49..83a7ec903b 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -244,6 +244,7 @@ + diff --git a/src/Umbraco.Tests/Web/Mvc/RenderModelBinderTests.cs b/src/Umbraco.Tests/Web/Mvc/RenderModelBinderTests.cs new file mode 100644 index 0000000000..5c2c1390fa --- /dev/null +++ b/src/Umbraco.Tests/Web/Mvc/RenderModelBinderTests.cs @@ -0,0 +1,84 @@ +using System.Globalization; +using Moq; +using NUnit.Framework; +using Umbraco.Core.Models; +using Umbraco.Core.Models.PublishedContent; +using Umbraco.Web.Models; +using Umbraco.Web.Mvc; + +namespace Umbraco.Tests.Web.Mvc +{ + [TestFixture] + public class RenderModelBinderTests + { + [Test] + public void Returns_Binder_For_IPublishedContent_And_IRenderModel() + { + var binder = new RenderModelBinder(); + var found = binder.GetBinder(typeof (IPublishedContent)); + Assert.IsNotNull(found); + found = binder.GetBinder(typeof(IRenderModel)); + Assert.IsNotNull(found); + found = binder.GetBinder(typeof(RenderModel)); + Assert.IsNotNull(found); + found = binder.GetBinder(typeof(DynamicPublishedContent)); + Assert.IsNotNull(found); + found = binder.GetBinder(typeof(MyContent)); + Assert.IsNotNull(found); + + found = binder.GetBinder(typeof(MyOtherContent)); + Assert.IsNull(found); + } + + [Test] + public void BindModel_Null_Source_Returns_Null() + { + Assert.IsNull(RenderModelBinder.BindModel(null, typeof(MyContent), CultureInfo.CurrentCulture)); + } + + [Test] + public void BindModel_Returns_If_Same_Type() + { + var content = new MyContent(Mock.Of()); + var bound = RenderModelBinder.BindModel(content, typeof (IPublishedContent), CultureInfo.CurrentCulture); + Assert.AreSame(content, bound); + } + + [Test] + public void BindModel_RenderModel_To_IPublishedContent() + { + var content = new MyContent(Mock.Of()); + var renderModel = new RenderModel(content, CultureInfo.CurrentCulture); + var bound = RenderModelBinder.BindModel(renderModel, typeof(IPublishedContent), CultureInfo.CurrentCulture); + Assert.AreSame(content, bound); + } + + [Test] + public void BindModel_IPublishedContent_To_RenderModel() + { + var content = new MyContent(Mock.Of()); + var bound = (IRenderModel)RenderModelBinder.BindModel(content, typeof(RenderModel), CultureInfo.CurrentCulture); + Assert.AreSame(content, bound.Content); + } + + [Test] + public void BindModel_IPublishedContent_To_Generic_RenderModel() + { + var content = new MyContent(Mock.Of()); + var bound = (IRenderModel)RenderModelBinder.BindModel(content, typeof(RenderModel), CultureInfo.CurrentCulture); + Assert.AreSame(content, bound.Content); + } + + public class MyOtherContent + { + + } + + public class MyContent : PublishedContentWrapped + { + public MyContent(IPublishedContent content) : base(content) + { + } + } + } +} \ No newline at end of file