예제 #1
0
        public void GivenAssetWithCircularReferences_WhenProcess_ThenExceptionThrown()
        {
            var module = new Module("~/test");
            var assetA = new Mock<IAsset>();
            assetA.SetupGet(a => a.SourceFilename).Returns("~/test/a.js");
            assetA.SetupGet(a => a.References)
                  .Returns(new[] { new AssetReference("~/test/b.js", assetA.Object, 1, AssetReferenceType.SameModule) });
            var assetB = new Mock<IAsset>();
            assetB.SetupGet(a => a.SourceFilename).Returns("~/test/b.js");
            assetB.SetupGet(a => a.References)
                  .Returns(new[] { new AssetReference("~/test/a.js", assetB.Object, 1, AssetReferenceType.SameModule) });

            module.AddAssets(new[] { assetA.Object, assetB.Object }, preSorted: false);

            var sorter = new SortAssetsByDependency();
            Assert.Throws<InvalidOperationException>(
                () => sorter.Process(module, Mock.Of<ICassetteApplication>())
            );
        }
예제 #2
0
        public void WhenModuleHasSortedAssets_ThenProcessDoesNotReorderAssets()
        {
            var module = new Module("~/test");
            var assetA = new Mock<IAsset>();
            assetA.SetupGet(a => a.SourceFilename).Returns("~/test/a.js");
            assetA.SetupGet(a => a.References)
                  .Returns(new[] { new AssetReference("~/TEST/B.js", assetA.Object, 1, AssetReferenceType.SameModule) });
            var assetB = new Mock<IAsset>();
            assetB.SetupGet(a => a.SourceFilename).Returns("~/test/b.js");
            module.AddAssets(new[] {assetA.Object, assetB.Object}, preSorted: true);

            var sorter = new SortAssetsByDependency();
            sorter.Process(module, Mock.Of<ICassetteApplication>());

            module.Assets[0].ShouldBeSameAs(assetA.Object);
            module.Assets[1].ShouldBeSameAs(assetB.Object);
        }