Change `GetImports` to allow querying of information on non-existent files.

- Added tests to validate imports can still be found on non-existent files.

#1267
This commit is contained in:
N. Taylor Mullen 2017-04-28 15:31:26 -07:00
parent c176bdbab0
commit 207e0f0b59
2 changed files with 47 additions and 6 deletions

View File

@ -182,12 +182,6 @@ namespace Microsoft.AspNetCore.Razor.Language
{
throw new ArgumentNullException(nameof(projectItem));
}
if (!projectItem.Exists)
{
throw new InvalidOperationException(Resources.FormatRazorTemplateEngine_ItemCouldNotBeFound(projectItem.Path));
}
var result = new List<RazorSourceDocument>();

View File

@ -11,6 +11,53 @@ namespace Microsoft.AspNetCore.Razor.Language
{
public class RazorTemplateEngineTest
{
[Fact]
public void GetImports_CanQueryInformationOnNonExistentFileWithoutImports()
{
// Arrange
var project = new TestRazorProject();
var razorEngine = RazorEngine.Create();
var templateEngine = new RazorTemplateEngine(razorEngine, project)
{
Options =
{
ImportsFileName = "MyImport.cshtml"
}
};
var projectItemToQuery = project.GetItem("/Views/Home/Index.cshtml");
// Act
var imports = templateEngine.GetImports(projectItemToQuery);
// Assert
Assert.Empty(imports);
}
[Fact]
public void GetImports_CanQueryInformationOnNonExistentFileWithImports()
{
// Arrange
var path = "/Views/Home/MyImport.cshtml";
var projectItem = new TestRazorProjectItem(path);
var project = new TestRazorProject(new[] { projectItem });
var razorEngine = RazorEngine.Create();
var templateEngine = new RazorTemplateEngine(razorEngine, project)
{
Options =
{
ImportsFileName = "MyImport.cshtml"
}
};
var projectItemToQuery = project.GetItem("/Views/Home/Index.cshtml");
// Act
var imports = templateEngine.GetImports(projectItemToQuery);
// Assert
var import = Assert.Single(imports);
Assert.Equal(projectItem.Path, import.FileName);
}
[Fact]
public void GenerateCode_ThrowsIfItemCannotBeFound()
{