From 207e0f0b59921efc2c47d2d58e1b0056c33dc3ce Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Fri, 28 Apr 2017 15:31:26 -0700 Subject: [PATCH] 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 --- .../RazorTemplateEngine.cs | 6 --- .../RazorTemplateEngineTest.cs | 47 +++++++++++++++++++ 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorTemplateEngine.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorTemplateEngine.cs index 62bee58376..5717db117d 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorTemplateEngine.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorTemplateEngine.cs @@ -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(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs index 75ca3e4acf..442d0b4b25 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs @@ -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() {