public void GetItem_ReturnsNotFoundResult()
        {
            // Arrange
            var fileProvider = new TestFileProvider("BasePath");
            var file         = fileProvider.AddFile("/SomeFile.cshtml", "content");

            fileProvider.AddDirectoryContent("/", new IFileInfo[] { file });
            var accessor = Mock.Of <IRazorViewEngineFileProviderAccessor>(a => a.FileProvider == fileProvider);

            var fileSystem = new FileProviderRazorProjectFileSystem(accessor, Mock.Of <IHostingEnvironment>(e => e.ContentRootPath == "BasePath"));

            // Act
            var item = fileSystem.GetItem("/NotFound.cshtml");

            // Assert
            Assert.False(item.Exists);
        }
        public void GetItem_PhysicalPathDoesNotStartWithContentRoot_ReturnsNull()
        {
            var fileProvider = new TestFileProvider("BasePath2");
            var file1        = fileProvider.AddFile("/File1.cshtml", "content");
            var file2        = fileProvider.AddFile("/File2.js", "content");
            var file3        = fileProvider.AddFile("/File3.cshtml", "content");

            fileProvider.AddDirectoryContent("/", new IFileInfo[] { file1, file2, file3 });

            var accessor = Mock.Of <IRazorViewEngineFileProviderAccessor>(a => a.FileProvider == fileProvider);

            var fileSystem = new FileProviderRazorProjectFileSystem(accessor, Mock.Of <IHostingEnvironment>(e => e.ContentRootPath == "BasePath"));

            // Act
            var item = fileSystem.GetItem("/File3.cshtml");

            // Assert
            Assert.True(item.Exists);
            Assert.Equal("/File3.cshtml", item.FilePath);
            Assert.Equal(string.Empty, item.BasePath);
            Assert.Equal(Path.Combine("BasePath2", "File3.cshtml"), item.PhysicalPath);
            Assert.Null(item.RelativePhysicalPath);
        }