From 3eae7cdc6c4f49d6e3f478b657475bfee764cbb0 Mon Sep 17 00:00:00 2001 From: Gerke Geurts Date: Thu, 8 Nov 2012 15:24:16 +0100 Subject: [PATCH] Added tests for null, anonymous and iterator models. --- .../RazorViewParser.cs | 28 ++++++------ .../ViewEngineTests.cs | 45 +++++++++++++++++++ .../Views/IteratorTest.cshtml | 2 + .../Views/NullModelTest.cshtml | 1 + .../Views/Test2.cshtml | 2 +- ...WebApiContrib.RazorViewEngine.Tests.csproj | 2 + 6 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/IteratorTest.cshtml create mode 100644 test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/NullModelTest.cshtml diff --git a/src/WebApiContrib.Formatting.Razor/RazorViewParser.cs b/src/WebApiContrib.Formatting.Razor/RazorViewParser.cs index 48d0440..fa4e204 100644 --- a/src/WebApiContrib.Formatting.Razor/RazorViewParser.cs +++ b/src/WebApiContrib.Formatting.Razor/RazorViewParser.cs @@ -11,13 +11,13 @@ public class RazorViewParser : IViewParser { private readonly ITemplateService _templateService; - public RazorViewParser(ITemplateService templateService) - { - if (templateService == null) - throw new ArgumentNullException("templateService"); + public RazorViewParser(ITemplateService templateService) + { + if (templateService == null) + throw new ArgumentNullException("templateService"); - _templateService = templateService; - } + _templateService = templateService; + } public RazorViewParser() { @@ -27,13 +27,13 @@ public RazorViewParser() public RazorViewParser(ITemplateResolver resolver) - { - if (resolver == null) - throw new ArgumentNullException("resolver"); + { + if (resolver == null) + throw new ArgumentNullException("resolver"); - var config = new TemplateServiceConfiguration { Resolver = resolver }; - _templateService = new TemplateService(config); - } + var config = new TemplateServiceConfiguration { Resolver = resolver }; + _templateService = new TemplateService(config); + } public byte[] ParseView(IView view, string viewTemplate, System.Text.Encoding encoding) @@ -47,8 +47,8 @@ private string GetParsedView(IView view, string viewTemplate) { if (view.ModelType == null) { - _templateService.Compile(viewTemplate, view.ViewName); - return _templateService.Run(view.ViewName); + _templateService.Compile(viewTemplate, null, view.ViewName); + return _templateService.Run(view.ViewName, view.Model); } _templateService.Compile(viewTemplate, view.ModelType, view.ViewName); diff --git a/test/WebApiContrib.Formatting.RazorViewEngine.Tests/ViewEngineTests.cs b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/ViewEngineTests.cs index 02e714a..031cd7d 100644 --- a/test/WebApiContrib.Formatting.RazorViewEngine.Tests/ViewEngineTests.cs +++ b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/ViewEngineTests.cs @@ -7,6 +7,8 @@ namespace WebApiContrib.Formatting.RazorViewEngine.Tests { + using System.Collections.Generic; + [TestFixture] public class ViewEngineTests { @@ -54,5 +56,48 @@ public void render_template_with_specified_resolver() Assert.AreEqual("Hello foo! Welcome to Razor!", output); } + + [Test] + public void render_anonymous_model_type() + { + var view = new View("Test1", new { Name = "foo" }); + var content = new ObjectContent(view, _formatter); + + var output = content.ReadAsStringAsync().Result; + + Assert.AreEqual("Hello foo! Welcome to Razor!", output); + } + + [Test] + public void render_iterator_model_type() + { + var view = new View("IteratorTest", SomeValues); + var content = new ObjectContent(view, _formatter); + + var output = content.ReadAsStringAsync().Result; + + Assert.AreEqual("first, second, third", output); + } + + private IEnumerable SomeValues + { + get + { + yield return "first"; + yield return "second"; + yield return "third"; + } + } + + [Test] + public void render_null_model() + { + var view = new View("NullModelTest", null, typeof(object)); + var content = new ObjectContent(view, _formatter); + + var output = content.ReadAsStringAsync().Result; + + Assert.AreEqual("Hello Anonymous! Welcome to Razor!", output); + } } } diff --git a/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/IteratorTest.cshtml b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/IteratorTest.cshtml new file mode 100644 index 0000000..53c81ed --- /dev/null +++ b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/IteratorTest.cshtml @@ -0,0 +1,2 @@ +@{ var count = 0; } +@foreach (var item in Model) { if (count++ > 0) {, }@item} \ No newline at end of file diff --git a/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/NullModelTest.cshtml b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/NullModelTest.cshtml new file mode 100644 index 0000000..0e17f66 --- /dev/null +++ b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/NullModelTest.cshtml @@ -0,0 +1 @@ +Hello @(Model != null ? Model : "Anonymous")! Welcome to Razor! \ No newline at end of file diff --git a/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/Test2.cshtml b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/Test2.cshtml index 50a8812..29e4637 100644 --- a/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/Test2.cshtml +++ b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/Views/Test2.cshtml @@ -1,4 +1,4 @@ @{ - _Layout = "~/Embed.cshtml"; + _Layout = "~/Embed.cshtml"; } Hello @Model.Name! Welcome to Razor! \ No newline at end of file diff --git a/test/WebApiContrib.Formatting.RazorViewEngine.Tests/WebApiContrib.RazorViewEngine.Tests.csproj b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/WebApiContrib.RazorViewEngine.Tests.csproj index fbff900..72c3564 100644 --- a/test/WebApiContrib.Formatting.RazorViewEngine.Tests/WebApiContrib.RazorViewEngine.Tests.csproj +++ b/test/WebApiContrib.Formatting.RazorViewEngine.Tests/WebApiContrib.RazorViewEngine.Tests.csproj @@ -82,6 +82,8 @@ + +