Include default imports when ImportsFileName is null

This commit is contained in:
Ajay Bhargav Baaskaran 2017-03-14 19:33:18 -07:00
parent aa597309a2
commit 310ccc31d0
2 changed files with 34 additions and 11 deletions

View File

@ -188,20 +188,19 @@ namespace Microsoft.AspNetCore.Razor.Evolution
throw new InvalidOperationException(Resources.FormatRazorTemplateEngine_ItemCouldNotBeFound(projectItem.Path)); throw new InvalidOperationException(Resources.FormatRazorTemplateEngine_ItemCouldNotBeFound(projectItem.Path));
} }
var importsFileName = Options.ImportsFileName;
if (string.IsNullOrEmpty(importsFileName))
{
return Enumerable.Empty<RazorSourceDocument>();
}
var result = new List<RazorSourceDocument>(); var result = new List<RazorSourceDocument>();
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. if (importItem.Exists)
result.Insert(0, RazorSourceDocument.ReadFrom(importItem)); {
// We want items in descending order. FindHierarchicalItems returns items in ascending order.
result.Insert(0, RazorSourceDocument.ReadFrom(importItem));
}
} }
} }

View File

@ -191,5 +191,29 @@ namespace Microsoft.AspNetCore.Razor.Evolution
import => Assert.Equal("/MyImport.cshtml", import.FileName), import => Assert.Equal("/MyImport.cshtml", import.FileName),
import => Assert.Equal("/Views/Home/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));
}
} }
} }