From 310ccc31d04e92deb326e6925a5c68faa17ebdea Mon Sep 17 00:00:00 2001 From: Ajay Bhargav Baaskaran Date: Tue, 14 Mar 2017 19:33:18 -0700 Subject: [PATCH] Include default imports when ImportsFileName is null --- .../RazorTemplateEngine.cs | 21 ++++++++-------- .../RazorTemplateEngineTest.cs | 24 +++++++++++++++++++ 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/Microsoft.AspNetCore.Razor.Evolution/RazorTemplateEngine.cs b/src/Microsoft.AspNetCore.Razor.Evolution/RazorTemplateEngine.cs index 5f52bb7e77..a460f30abb 100644 --- a/src/Microsoft.AspNetCore.Razor.Evolution/RazorTemplateEngine.cs +++ b/src/Microsoft.AspNetCore.Razor.Evolution/RazorTemplateEngine.cs @@ -188,20 +188,19 @@ namespace Microsoft.AspNetCore.Razor.Evolution throw new InvalidOperationException(Resources.FormatRazorTemplateEngine_ItemCouldNotBeFound(projectItem.Path)); } - var importsFileName = Options.ImportsFileName; - if (string.IsNullOrEmpty(importsFileName)) - { - return Enumerable.Empty(); - } - var result = new List(); - var importProjectItems = Project.FindHierarchicalItems(projectItem.Path, importsFileName); - foreach (var importItem in importProjectItems) + + var importsFileName = Options.ImportsFileName; + if (!string.IsNullOrEmpty(importsFileName)) { - if (importItem.Exists) + var importProjectItems = Project.FindHierarchicalItems(projectItem.Path, importsFileName); + foreach (var importItem in importProjectItems) { - // We want items in descending order. FindHierarchicalItems returns items in ascending order. - result.Insert(0, RazorSourceDocument.ReadFrom(importItem)); + if (importItem.Exists) + { + // We want items in descending order. FindHierarchicalItems returns items in ascending order. + result.Insert(0, RazorSourceDocument.ReadFrom(importItem)); + } } } diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/RazorTemplateEngineTest.cs b/test/Microsoft.AspNetCore.Razor.Evolution.Test/RazorTemplateEngineTest.cs index 76f05123a1..1076e3ea9f 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/RazorTemplateEngineTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/RazorTemplateEngineTest.cs @@ -191,5 +191,29 @@ namespace Microsoft.AspNetCore.Razor.Evolution import => Assert.Equal("/MyImport.cshtml", import.FileName), import => Assert.Equal("/Views/Home/MyImport.cshtml", import.FileName)); } + + [Fact] + public void CreateCodeDocument_NullImportFileName_IncludesDefaultImportIfNotNull() + { + // Arrange + var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); + var project = new TestRazorProject(new[] { projectItem }); + var razorEngine = RazorEngine.Create(); + var defaultImport = RazorSourceDocument.ReadFrom(new MemoryStream(), "Default.cshtml"); + var templateEngine = new RazorTemplateEngine(razorEngine, project) + { + Options = + { + DefaultImports = defaultImport, + } + }; + + // Act + var codeDocument = templateEngine.CreateCodeDocument(projectItem); + + // Assert + Assert.Collection(codeDocument.Imports, + import => Assert.Same(defaultImport, import)); + } } }