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));
        }
Esempio n. 4
0
        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));
        }