示例#1
0
        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"));
        }
示例#2
0
        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"));
        }
示例#4
0
        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"));
        }
示例#5
0
        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"));
        }
示例#8
0
        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"));
        }
示例#9
0
        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"));
        }
示例#11
0
        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);
        }
示例#12
0
        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"));
        }