public void Assets_Can_Be_Retrieved_From_Multiple_Configurations() { var config1 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest1.json", AssetOutputPath = "~/dist/1" }; var config2 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest2.json", AssetOutputPath = "~/dist/2" }; var config3 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest3.json", AssetOutputPath = "" }; var config4 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest4.json", AssetOutputPath = "~/dist/ignored" }; SetupManifestFile(config1.AssetManifestPath, @"{ ""code"": { ""js"": ""file.1.js"" } }"); SetupManifestFile(config2.AssetManifestPath, @"{ ""style"": { ""css"": ""file.2.css"" } }"); SetupManifestFile(config3.AssetManifestPath, @"{ ""file"": { ""js"": ""file.3.js"" } }"); SetupManifestFile(config4.AssetManifestPath, @"{ ""other"": { ""js"": ""http://server/file.4.js"" } }"); var webpack = new Webpack(new[] { config1, config2, config3, config4 }, _pathMappingService.Object); Assert.That(webpack.GetAssetUrl("code", "js"), Is.EqualTo("~/dist/1/file.1.js")); Assert.That(webpack.GetAssetUrl("style", "css"), Is.EqualTo("~/dist/2/file.2.css")); Assert.That(webpack.GetAssetUrl("file", "js"), Is.EqualTo("file.3.js")); Assert.That(webpack.GetAssetUrl("other", "js"), Is.EqualTo("http://server/file.4.js")); }
public void Assets_Can_Be_Retrieved_From_Multiple_Configurations() { var config1 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest1.json", AssetOutputPath = "~/dist/1" }; var config2 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest2.json", AssetOutputPath = "~/dist/2" }; var config3 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest3.json", AssetOutputPath = "" }; var config4 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest4.json", AssetOutputPath = "~/dist/ignored" }; SetupManifestFile(config1, @"{ ""code"": { ""js"": ""file.1.js"" } }"); SetupManifestFile(config2, @"{ ""style"": { ""css"": ""file.2.css"" } }"); SetupManifestFile(config3, @"{ ""file"": { ""js"": ""file.3.js"" } }"); SetupManifestFile(config4, @"{ ""other"": { ""js"": ""http://server/file.4.js"" } }"); var manifest1 = WebpackAssetsDictionary.FromConfig(config1); var manifest2 = WebpackAssetsDictionary.FromConfig(config2); var manifest3 = WebpackAssetsDictionary.FromConfig(config3); var manifest4 = WebpackAssetsDictionary.FromConfig(config4); var webpack = new Webpack(new[] { manifest1, manifest2, manifest3, manifest4 }); Assert.That(webpack.GetAssetUrl("code", "js"), Is.EqualTo("~/dist/1/file.1.js")); Assert.That(webpack.GetAssetUrl("style", "css"), Is.EqualTo("~/dist/2/file.2.css")); Assert.That(webpack.GetAssetUrl("file", "js"), Is.EqualTo("file.3.js")); Assert.That(webpack.GetAssetUrl("other", "js"), Is.EqualTo("http://server/file.4.js")); }
public void Assets_Can_Be_Retrieved_When_Entrypoints_Provides_Multiple_Assets() { var config1 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest5.json", AssetOutputPath = "" }; SetupManifestFile(config1, @"{ ""main"": { ""js"": [ ""/dist/first-script.js"", ""/dist/second-script.js"", ""/dist/third-script.js"" ], ""css"": [ ""/dist/first-style.css"", ""/dist/second-style.css"", ] } }"); WebpackAssetsDictionary webpackAssetDictionary = WebpackAssetsDictionary.FromConfig(config1); var webpack = new Webpack(new[] { webpackAssetDictionary }); Assert.That(webpack.GetAssetsUrl("main", "js").Count, Is.EqualTo(3)); Assert.That(webpack.GetAssetsUrl("main", "js")[0], Is.EqualTo("/dist/first-script.js")); Assert.That(webpack.GetAssetsUrl("main", "js")[1], Is.EqualTo("/dist/second-script.js")); Assert.That(webpack.GetAssetsUrl("main", "js")[2], Is.EqualTo("/dist/third-script.js")); Assert.That(webpack.GetAssetsUrl("main", "css").Count, Is.EqualTo(2)); Assert.That(webpack.GetAssetsUrl("main", "css")[0], Is.EqualTo("/dist/first-style.css")); Assert.That(webpack.GetAssetsUrl("main", "css")[1], Is.EqualTo("/dist/second-style.css")); }
public void GetAssetUrl_Throws_On_No_Matching_Resource() { _config.AssetManifestPath = "~/scripts/manifest.json"; SetupManifestFile(_config.AssetManifestPath, @"{ ""file"": { ""js"": ""file.js"" } }"); var webpack = new Webpack(new[] { _config }, _server.Object); Assert.Throws <AssetNotFoundException>(() => webpack.GetAssetUrl("non-existant", "js")); Assert.Throws <AssetNotFoundException>(() => webpack.GetAssetUrl("file", "non-existant")); Assert.Throws <AssetNotFoundException>(() => webpack.GetAssetUrl("non-existant", "non-existant")); }
public void GetAssetUrl_Returns_Null_When_Not_Required_And_No_Matching_Resource() { _config.AssetManifestPath = "~/scripts/manifest.json"; SetupManifestFile(_config.AssetManifestPath, @"{ ""file"": { ""js"": ""file.js"" } }"); var webpack = new Webpack(new[] { _config }, _server.Object); Assert.That(webpack.GetAssetUrl("non-existant", "js", false), Is.Null); Assert.That(webpack.GetAssetUrl("file", "non-existant", false), Is.Null); Assert.That(webpack.GetAssetUrl("non-existant", "non-existant", false), Is.Null); }
public void GetAssetsUrl_Returns_Empty_List_When_Not_Required_And_No_Matching_Resource() { _config.AssetManifestPath = "~/scripts/manifest.json"; SetupManifestFile(_config, @"{ ""file"": { ""js"": ""file.js"" } }"); WebpackAssetsDictionary webpackAssetDictionary = WebpackAssetsDictionary.FromConfig(_config); var webpack = new Webpack(new[] { webpackAssetDictionary }); Assert.That(webpack.GetAssetsUrl("non-existant", "js", false), Is.Empty); Assert.That(webpack.GetAssetsUrl("file", "non-existant", false), Is.Empty); Assert.That(webpack.GetAssetsUrl("non-existant", "non-existant", false), Is.Empty); }
public void GetAssetsUrl_Throws_On_No_Matching_Resource() { _config.AssetManifestPath = "~/scripts/manifest.json"; SetupManifestFile(_config, @"{ ""file"": { ""js"": ""file.js"" } }"); WebpackAssetsDictionary webpackAssetDictionary = WebpackAssetsDictionary.FromConfig(_config); var webpack = new Webpack(new[] { webpackAssetDictionary }); Assert.Throws <AssetNotFoundException>(() => webpack.GetAssetsUrl("non-existant", "js")); Assert.Throws <AssetNotFoundException>(() => webpack.GetAssetsUrl("file", "non-existant")); Assert.Throws <AssetNotFoundException>(() => webpack.GetAssetsUrl("non-existant", "non-existant")); }
public void Assets_Can_Be_Retrieved_From_Multiple_Configurations() { var config1 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest1.json", AssetOutputPath = "~/dist/1" }; var config2 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest2.json", AssetOutputPath = "~/dist/2" }; SetupManifestFile(config1.AssetManifestPath, @"{ ""code"": { ""js"": ""file.1.js"" } }"); SetupManifestFile(config2.AssetManifestPath, @"{ ""style"": { ""css"": ""file.2.css"" } }"); var webpack = new Webpack(new[] { config1, config2 }, _server.Object); Assert.That(webpack.GetAssetUrl("code", "js"), Is.EqualTo("~/dist/1/file.1.js")); Assert.That(webpack.GetAssetUrl("style", "css"), Is.EqualTo("~/dist/2/file.2.css")); }
public void Assets_Are_Lazily_Loaded() { var webpack = new Webpack(new[] { _config }, _server.Object); _server.Verify(s => s.MapPath(It.IsAny <string>()), Times.Never()); _config.AssetManifestPath = "~/scripts/manifest.json"; _config.AssetOutputPath = "~/dist"; SetupManifestFile(_config.AssetManifestPath, @"{ ""file"": { ""js"": ""file.js"" } }"); Assert.That(webpack.GetAssetUrl("file", "js"), Is.EqualTo("~/dist/file.js")); _server.Verify(s => s.MapPath(It.IsAny <string>()), Times.Once()); Assert.That(webpack.GetAssetUrl("file", "js"), Is.EqualTo("~/dist/file.js")); _server.Verify(s => s.MapPath(It.IsAny <string>()), Times.Once()); }
public void Assets_have_proper_url_when_using_AsemblyOutputPath() { var config1 = new WebpackConfig { AssetManifestPath = "~/scripts/manifest5.json", AssetOutputPath = "//somecdn.com/path/" }; SetupManifestFile(config1, @"{ ""main"": { ""js"": [ ""/dist/first-script.js"", ""/dist/second-script.js"", ""/dist/third-script.js"" ], ""css"": [ ""/dist/first-style.css"", ""/dist/second-style.css"", ] } }"); WebpackAssetsDictionary webpackAssetDictionary = WebpackAssetsDictionary.FromConfig(config1); var webpack = new Webpack(new[] { webpackAssetDictionary }); Assert.That(webpack.GetAssetsUrl("main", "js").Count, Is.EqualTo(3)); Assert.That(webpack.GetAssetsUrl("main", "js")[0], Is.EqualTo("//somecdn.com/path/dist/first-script.js")); Assert.That(webpack.GetAssetsUrl("main", "js")[1], Is.EqualTo("//somecdn.com/path/dist/second-script.js")); Assert.That(webpack.GetAssetsUrl("main", "js")[2], Is.EqualTo("//somecdn.com/path/dist/third-script.js")); Assert.That(webpack.GetAssetsUrl("main", "css").Count, Is.EqualTo(2)); Assert.That(webpack.GetAssetsUrl("main", "css")[0], Is.EqualTo("//somecdn.com/path/dist/first-style.css")); Assert.That(webpack.GetAssetsUrl("main", "css")[1], Is.EqualTo("//somecdn.com/path/dist/second-style.css")); // Test variations of the AssetOutputPath webpackAssetDictionary.RootFolder = "/root"; Assert.That(webpack.GetAssetsUrl("main", "js")[0], Is.EqualTo("/root/dist/first-script.js")); webpackAssetDictionary.RootFolder = "/root//////"; // extra slashes Assert.That(webpack.GetAssetsUrl("main", "js")[0], Is.EqualTo("/root/dist/first-script.js")); webpackAssetDictionary.RootFolder = "\\root\\"; // back slash converted to forward slashes Assert.That(webpack.GetAssetsUrl("main", "js")[0], Is.EqualTo("/root/dist/first-script.js")); }
public void GetAssetUrl_Returns_Null_When_Not_Required_And_No_Configurations_Specified() { var webpack = new Webpack(new WebpackConfig[0], _server.Object); Assert.That(webpack.GetAssetUrl("any", "any", false), Is.Null); }
public void GetAssetUrl_Throws_On_No_Configurations_Specified() { var webpack = new Webpack(new WebpackConfig[0], _server.Object); Assert.Throws <AssetNotFoundException>(() => webpack.GetAssetUrl("any", "any")); }
public void GetAssetsUrl_Returns_Empty_List_When_Not_Required_And_No_Configurations_Specified() { var webpack = new Webpack(Enumerable.Empty <WebpackAssetsDictionary>()); Assert.That(webpack.GetAssetsUrl("any", "any", false), Is.Empty); }
public void GetAssetsUrl_Throws_On_No_Configurations_Specified() { var webpack = new Webpack(Enumerable.Empty <WebpackAssetsDictionary>()); Assert.Throws <AssetNotFoundException>(() => webpack.GetAssetsUrl("any", "any")); }