public void MergeShimsWithSameKey()
        {
            var jqueryShim = new ShimEntry
            {
                For          = "jquery",
                Dependencies = new List <RequireDependency>
                {
                    new RequireDependency {
                        Dependency = "depA"
                    },
                    new RequireDependency {
                        Dependency = "depB"
                    }
                }
            };

            var altJqueryShim = new ShimEntry
            {
                For          = "jquery",
                Dependencies = new List <RequireDependency>
                {
                    new RequireDependency {
                        Dependency = "depB"
                    },
                    new RequireDependency {
                        Dependency = "depD"
                    }
                }
            };

            var firstCollection  = ConfigurationCreators.CreateCollectionWithShims(jqueryShim);
            var secondCollection = ConfigurationCreators.CreateCollectionWithShims(altJqueryShim);

            var merger = ConfigurationCreators.CreateDefaultConfigMerger(firstCollection, secondCollection);
            var merged = merger.GetMerged();

            var expectedShim = new ShimEntry
            {
                For          = "jquery",
                Dependencies = new List <RequireDependency>
                {
                    new RequireDependency {
                        Dependency = "depA"
                    },
                    new RequireDependency {
                        Dependency = "depB"
                    },
                    new RequireDependency {
                        Dependency = "depD"
                    }
                }
            };

            var expected = ConfigurationCreators.CreateCollectionWithShims(expectedShim);

            CustomAssert.JsonEquals(expected, merged);
        }
        public void CreateSingleAutoBundleListForDifferentBundleIds()
        {
            var firstBundle = new AutoBundle
            {
                Id         = "bundleA",
                OutputPath = @"\Scripts\bundleA.js",
                Includes   = new List <AutoBundleItem> {
                    new AutoBundleItem {
                        File = "jquery"
                    }
                },
                Excludes = new List <AutoBundleItem> {
                    new AutoBundleItem {
                        File = "jquery"
                    }
                }
            };
            var secondBundle = new AutoBundle
            {
                Id         = "bundleB",
                OutputPath = @"\Scripts\bundleB.js",
                Includes   = new List <AutoBundleItem> {
                    new AutoBundleItem {
                        File = "jquery"
                    }
                },
                Excludes = new List <AutoBundleItem> {
                    new AutoBundleItem {
                        File = "jquery"
                    }
                }
            };

            var firstCollection  = ConfigurationCreators.CreateCollectionWithAutoBundles(firstBundle);
            var secondCollection = ConfigurationCreators.CreateCollectionWithAutoBundles(secondBundle);

            var merger = ConfigurationCreators.CreateDefaultConfigMerger(firstCollection, secondCollection);
            var merged = merger.GetMerged();

            var expectedCollection = ConfigurationCreators.CreateEmptyCollection();

            expectedCollection.AutoBundles.Bundles = new List <AutoBundle>
            {
                firstBundle,
                secondBundle
            };

            CustomAssert.JsonEquals(expectedCollection, merged);
        }
        public void OverridePathsWithSameKey()
        {
            var jqueryPath    = new RequirePath("jquery", "jquery-1.06.2");
            var altJqueryPath = new RequirePath("jquery", "jquery-1.05.3");

            var firstCollection  = ConfigurationCreators.CreateCollectionWithPaths(jqueryPath);
            var secondCollection = ConfigurationCreators.CreateCollectionWithPaths(altJqueryPath);

            var merger = ConfigurationCreators.CreateDefaultConfigMerger(firstCollection, secondCollection);
            var merged = merger.GetMerged();

            var expected = ConfigurationCreators.CreateCollectionWithPaths(altJqueryPath);

            CustomAssert.JsonEquals(expected, merged);
        }
        public void UnitePathsWhenKeysAreDifferent()
        {
            var jqueryPath  = new RequirePath("jquery", "jquery-1.06.2");
            var amplifyPath = new RequirePath("amplify", "amplify-10.3.5");

            var firstCollection  = ConfigurationCreators.CreateCollectionWithPaths(jqueryPath);
            var secondCollection = ConfigurationCreators.CreateCollectionWithPaths(amplifyPath);

            var merger = ConfigurationCreators.CreateDefaultConfigMerger(firstCollection, secondCollection);
            var merged = merger.GetMerged();

            var expected = ConfigurationCreators.CreateCollectionWithPaths(jqueryPath, amplifyPath);

            CustomAssert.JsonEquals(expected, merged);
        }
        public void UniteMapElementsForSingleScript()
        {
            var firstMap = new RequireMapElement
            {
                For          = "scriptA",
                Replacements = new List <RequireReplacement>
                {
                    new RequireReplacement {
                        OldKey = "jquery", NewKey = "jquery.min"
                    }
                }
            };

            var secondMap = new RequireMapElement
            {
                For          = "scriptA",
                Replacements = new List <RequireReplacement>
                {
                    new RequireReplacement {
                        OldKey = "amplify", NewKey = "amplify.min"
                    }
                }
            };

            var firstCollection  = ConfigurationCreators.CreateCollectionWithMaps(firstMap);
            var secondCollection = ConfigurationCreators.CreateCollectionWithMaps(secondMap);

            var merger = ConfigurationCreators.CreateDefaultConfigMerger(firstCollection, secondCollection);
            var merged = merger.GetMerged();

            var expectedCollection = ConfigurationCreators.CreateEmptyCollection();

            expectedCollection.Map.MapElements.Add(new RequireMapElement
            {
                For          = "scriptA",
                Replacements = new List <RequireReplacement>
                {
                    new RequireReplacement {
                        OldKey = "jquery", NewKey = "jquery.min"
                    },
                    new RequireReplacement {
                        OldKey = "amplify", NewKey = "amplify.min"
                    }
                }
            });

            CustomAssert.JsonEquals(expectedCollection, merged);
        }
        public void OverrideOutputPathForAutoBundleWithSameId()
        {
            var firstBundle = new AutoBundle
            {
                Id         = "bundleA",
                OutputPath = @"\Scripts\bundleA.js",
                Includes   = new List <AutoBundleItem>(),
                Excludes   = new List <AutoBundleItem>()
            };

            var secondBundle = new AutoBundle
            {
                Id         = "bundleA",
                OutputPath = @"\Scripts\bundleB.js",
                Includes   = new List <AutoBundleItem>(),
                Excludes   = new List <AutoBundleItem>()
            };

            var firstCollection  = ConfigurationCreators.CreateCollectionWithAutoBundles(firstBundle);
            var secondCollection = ConfigurationCreators.CreateCollectionWithAutoBundles(secondBundle);

            var merger = ConfigurationCreators.CreateDefaultConfigMerger(firstCollection, secondCollection);
            var merged = merger.GetMerged();

            var expectedCollection = ConfigurationCreators.CreateEmptyCollection();

            expectedCollection.AutoBundles.Bundles = new List <AutoBundle>
            {
                new AutoBundle
                {
                    Id         = "bundleA",
                    OutputPath = @"\Scripts\bundleB.js",
                    Includes   = new List <AutoBundleItem>(),
                    Excludes   = new List <AutoBundleItem>()
                }
            };

            CustomAssert.JsonEquals(expectedCollection, merged);
        }
        public void CreateSingleMapListForDifferentScripts()
        {
            var scriptAMap = new RequireMapElement
            {
                For          = "scriptA",
                Replacements = new List <RequireReplacement>
                {
                    new RequireReplacement {
                        OldKey = "jquery", NewKey = "jquery.min"
                    }
                }
            };

            var scriptBMap = new RequireMapElement
            {
                For          = "scriptB",
                Replacements = new List <RequireReplacement>
                {
                    new RequireReplacement {
                        OldKey = "jquery", NewKey = "jquery.custom"
                    }
                }
            };


            var firstCollection  = ConfigurationCreators.CreateCollectionWithMaps(scriptAMap);
            var secondCollection = ConfigurationCreators.CreateCollectionWithMaps(scriptBMap);

            var merger = ConfigurationCreators.CreateDefaultConfigMerger(firstCollection, secondCollection);
            var merged = merger.GetMerged();

            var expectedCollection = ConfigurationCreators.CreateEmptyCollection();

            expectedCollection.Map.MapElements.Add(scriptAMap);
            expectedCollection.Map.MapElements.Add(scriptBMap);

            CustomAssert.JsonEquals(expectedCollection, merged);
        }
        public void OverrideExportsValueForShimsWithSameKey()
        {
            var jqueryShim = new ShimEntry
            {
                For          = "jquery",
                Dependencies = new List <RequireDependency>(),
                Exports      = "jqu"
            };

            var altJqueryShim = new ShimEntry
            {
                For          = "jquery",
                Dependencies = new List <RequireDependency>(),
                Exports      = "jlo"
            };

            var firstCollection  = ConfigurationCreators.CreateCollectionWithShims(jqueryShim);
            var secondCollection = ConfigurationCreators.CreateCollectionWithShims(altJqueryShim);

            var merger = ConfigurationCreators.CreateDefaultConfigMerger(firstCollection, secondCollection);
            var merged = merger.GetMerged();

            Assert.Equal("jlo", merged.Shim.ShimEntries.FirstOrDefault().Exports);
        }