/// <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); }
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())); }