public void CachesMatchResults() { // Arrange var changeToken = new Mock <IChangeToken>(); var fileProvider = MakeFileProvider(MakeDirectoryContents("site.css", "blank.css")); Mock.Get(fileProvider).Setup(f => f.Watch(It.IsAny <string>())).Returns(changeToken.Object); var value = new Mock <ICacheEntry>(); value.Setup(c => c.Value).Returns(null); value.Setup(c => c.ExpirationTokens).Returns(new List <IChangeToken>()); var cache = MakeCache(); Mock.Get(cache).Setup(c => c.CreateEntry( /*key*/ It.IsAny <object>())) .Returns((object key) => value.Object) .Verifiable(); var requestPathBase = PathString.Empty; var globbingUrlBuilder = new GlobbingUrlBuilder(fileProvider, cache, requestPathBase); // Act var urlList = globbingUrlBuilder.BuildUrlList( staticUrl: null, includePattern: "**/*.css", excludePattern: null); // Assert Assert.Collection(urlList, url => Assert.Equal("/blank.css", url), url => Assert.Equal("/site.css", url)); Mock.Get(cache).VerifyAll(); }
public void ReturnsOnlyStaticUrlWhenPatternDoesntFindAnyMatches() { // Arrange var fileProvider = MakeFileProvider(); var cache = new MemoryCache(new MemoryCacheOptions()); var requestPathBase = PathString.Empty; var globbingUrlBuilder = new GlobbingUrlBuilder(fileProvider, cache, requestPathBase); // Act var urlList = globbingUrlBuilder.BuildUrlList("/site.css", "**/*.css", excludePattern: null); // Assert Assert.Collection(urlList, url => Assert.Equal("/site.css", url)); }
public void DedupesStaticUrlAndPatternMatches() { // Arrange var fileProvider = MakeFileProvider(MakeDirectoryContents("site.css", "blank.css")); var cache = new MemoryCache(new MemoryCacheOptions()); var requestPathBase = PathString.Empty; var globbingUrlBuilder = new GlobbingUrlBuilder(fileProvider, cache, requestPathBase); // Act var urlList = globbingUrlBuilder.BuildUrlList("/site.css", "**/*.css", excludePattern: null); // Assert Assert.Collection(urlList, url => Assert.Equal("/site.css", url), url => Assert.Equal("/blank.css", url)); }
public void BuildUrlList_AddsToMemoryCache_WithSizeLimit() { // Arrange var cacheEntry = Mock.Of <ICacheEntry>(m => m.ExpirationTokens == new List <IChangeToken>()); var cache = Mock.Of <IMemoryCache>(m => m.CreateEntry(It.IsAny <object>()) == cacheEntry); var fileProvider = MakeFileProvider(MakeDirectoryContents("site.css", "blank.css")); var requestPathBase = PathString.Empty; var globbingUrlBuilder = new GlobbingUrlBuilder(fileProvider, cache, requestPathBase); // Act var urlList = globbingUrlBuilder.BuildUrlList("/site.css", "**/*.css", excludePattern: null); // Assert Assert.Equal(38, cacheEntry.Size); }
public void HandlesCommaSeparatedPatterns(string includePattern, string[] expectedOutput) { // Arrange var fileProvider = MakeFileProvider(MakeDirectoryContents("site.css", "blank.js", "site2.txt", "site.js")); var cache = new MemoryCache(new MemoryCacheOptions()); var requestPathBase = PathString.Empty; var globbingUrlBuilder = new GlobbingUrlBuilder(fileProvider, cache, requestPathBase); // Act var urlList = globbingUrlBuilder.BuildUrlList( staticUrl: null, includePattern: includePattern, excludePattern: null); // Assert Assert.Equal(expectedOutput, urlList, StringComparer.Ordinal); }
public void OrdersGlobbedMatchResultsCorrectly(string staticUrl, FileNode dirStructure, string[] expectedPaths) { // Arrange var fileProvider = MakeFileProvider(dirStructure); var cache = new MemoryCache(new MemoryCacheOptions()); var requestPathBase = PathString.Empty; var globbingUrlBuilder = new GlobbingUrlBuilder(fileProvider, cache, requestPathBase); // Act var urlList = globbingUrlBuilder.BuildUrlList(staticUrl, "**/*.*", excludePattern: null); // Assert var collectionAssertions = expectedPaths.Select <string, Action <string> >(expected => actual => Assert.Equal(expected, actual)); Assert.Collection(urlList, collectionAssertions.ToArray()); }
public void ResolvesMatchedUrlsAgainstPathBase(string pathBase) { // Arrange var fileProvider = MakeFileProvider(MakeDirectoryContents("site.css", "blank.css")); var cache = new MemoryCache(new MemoryCacheOptions()); var requestPathBase = new PathString(pathBase); var globbingUrlBuilder = new GlobbingUrlBuilder(fileProvider, cache, requestPathBase); // Act var urlList = globbingUrlBuilder.BuildUrlList( staticUrl: null, includePattern: "**/*.css", excludePattern: null); // Assert Assert.Collection(urlList, url => Assert.Equal($"{pathBase}/blank.css", url), url => Assert.Equal($"{pathBase}/site.css", url)); }
public void UsesCachedMatchResults() { // Arrange var fileProvider = MakeFileProvider(); var expected = new List <string> { "/blank.css", "/site.css" }; var cache = MakeCache(result: expected); var requestPathBase = PathString.Empty; var globbingUrlBuilder = new GlobbingUrlBuilder(fileProvider, cache, requestPathBase); // Act var actual = globbingUrlBuilder.BuildUrlList( staticUrl: null, includePattern: "**/*.css", excludePattern: null); // Assert Assert.Collection(actual, url => Assert.Equal("/blank.css", url), url => Assert.Equal("/site.css", url)); }
public void TrimsLeadingTildeAndSlashFromPatterns(string prefix) { // Arrange var fileProvider = MakeFileProvider(MakeDirectoryContents("site.css", "blank.css")); var cache = new MemoryCache(new MemoryCacheOptions()); var requestPathBase = PathString.Empty; var includePatterns = new List <string>(); var excludePatterns = new List <string>(); var matcher = MakeMatcher(includePatterns, excludePatterns); var globbingUrlBuilder = new GlobbingUrlBuilder(fileProvider, cache, requestPathBase); globbingUrlBuilder.MatcherBuilder = () => matcher; // Act var urlList = globbingUrlBuilder.BuildUrlList( staticUrl: null, includePattern: $"{prefix}**/*.css", excludePattern: $"{prefix}**/*.min.css"); // Assert Assert.Collection(includePatterns, pattern => Assert.Equal("**/*.css", pattern)); Assert.Collection(excludePatterns, pattern => Assert.Equal("**/*.min.css", pattern)); }