/// <summary>
        /// Adjusts the relative paths in CSS documents.
        /// </summary>
        public static IAsset AdjustRelativePaths(this IAsset bundle)
        {
            var minifier = new RelativePathAdjuster();

            bundle.Processors.Add(minifier);

            return(bundle);
        }
Example #2
0
        public async Task AdjustRelativePaths_Success(string url, string newUrl)
        {
            var adjuster     = new RelativePathAdjuster();
            var context      = new Mock <IAssetContext>().SetupAllProperties();
            var pipeline     = new Mock <IAssetPipeline>().SetupAllProperties();
            var inputFile    = new PhysicalFileInfo(new FileInfo(@"c:\source\css\site.css"));
            var outputFile   = new PhysicalFileInfo(new FileInfo(@"c:\source\dist\all.css"));
            var asset        = new Mock <IAsset>().SetupAllProperties();
            var env          = new Mock <IWebHostEnvironment>();
            var fileProvider = new Mock <IFileProvider>();

            context.SetupGet(s => s.Asset.Route)
            .Returns("/my/route.css");

            context.Setup(s => s.HttpContext.RequestServices.GetService(typeof(IAssetPipeline)))
            .Returns(pipeline.Object);

            context.Setup(s => s.HttpContext.RequestServices.GetService(typeof(IWebHostEnvironment)))
            .Returns(env.Object);

            context.SetupGet(s => s.Asset)
            .Returns(asset.Object);

            env.SetupGet(e => e.WebRootFileProvider)
            .Returns(fileProvider.Object);

            fileProvider.SetupSequence(f => f.GetFileInfo(It.IsAny <string>()))
            .Returns(inputFile)
            .Returns(outputFile);

            context.Object.Content = new Dictionary <string, byte[]> {
                { "css/site.css", url.AsByteArray() }
            };

            await adjuster.ExecuteAsync(context.Object);

            Assert.Equal(newUrl, context.Object.Content.First().Value.AsString());
            Assert.Equal("", adjuster.CacheKey(new DefaultHttpContext()));
        }