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));
}
var importsFileName = Options.ImportsFileName;
if (string.IsNullOrEmpty(importsFileName))
{
return Enumerable.Empty<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.
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));
}
}
}

View File

@ -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));
}
}
}