public void GivenTwoAssetsWhereADependsOnBByDifferentlyCasedFilename_WhenSorted_ThenBIsBeforeAInBundle() { var bundle = new TestableBundle("~/test"); var assetA = new Mock<IAsset>(); assetA.SetupGet(a => a.SourceFile.FullPath).Returns("~/test/a.js"); assetA.SetupGet(a => a.References) .Returns(new[] { new AssetReference("~/TEST/B.js", assetA.Object, 1, AssetReferenceType.SameBundle) }); var assetB = new Mock<IAsset>(); assetB.SetupGet(a => a.SourceFile.FullPath).Returns("~/test/b.js"); bundle.Assets.Add(assetA.Object); bundle.Assets.Add(assetB.Object); var sorter = new SortAssetsByDependency(); sorter.Process(bundle, new CassetteSettings()); bundle.Assets[0].ShouldBeSameAs(assetB.Object); bundle.Assets[1].ShouldBeSameAs(assetA.Object); }
public void GivenTwoAssetsWhereADependsOnBByDifferentlyCasedFilename_WhenSorted_ThenBIsBeforeAInModule() { 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.Assets.Add(assetA.Object); module.Assets.Add(assetB.Object); var sorter = new SortAssetsByDependency(); sorter.Process(module, Mock.Of<ICassetteApplication>()); module.Assets[0].ShouldBeSameAs(assetB.Object); module.Assets[1].ShouldBeSameAs(assetA.Object); }
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>()) ); }
public void GivenAssetWithCircularReferences_WhenProcess_ThenExceptionThrown() { var bundle = new TestableBundle("~/test"); var assetA = new Mock<IAsset>(); assetA.SetupGet(a => a.SourceFile.FullPath).Returns("~/test/a.js"); assetA.SetupGet(a => a.References) .Returns(new[] { new AssetReference("~/test/b.js", assetA.Object, 1, AssetReferenceType.SameBundle) }); var assetB = new Mock<IAsset>(); assetB.SetupGet(a => a.SourceFile.FullPath).Returns("~/test/b.js"); assetB.SetupGet(a => a.References) .Returns(new[] { new AssetReference("~/test/a.js", assetB.Object, 1, AssetReferenceType.SameBundle) }); bundle.Assets.Add(assetA.Object); bundle.Assets.Add(assetB.Object); var sorter = new SortAssetsByDependency(); Assert.Throws<InvalidOperationException>( () => sorter.Process(bundle, new CassetteSettings()) ); }
public void WhenBundleHasSortedAssets_ThenProcessDoesNotReorderAssets() { var bundle = new TestableBundle("~/test"); var assetA = new Mock<IAsset>(); assetA.SetupGet(a => a.SourceFile.FullPath).Returns("~/test/a.js"); assetA.SetupGet(a => a.References) .Returns(new[] { new AssetReference("~/TEST/B.js", assetA.Object, 1, AssetReferenceType.SameBundle) }); var assetB = new Mock<IAsset>(); assetB.SetupGet(a => a.SourceFile.FullPath).Returns("~/test/b.js"); bundle.Assets.Add(assetA.Object); bundle.Assets.Add(assetB.Object); bundle.IsSorted = true; var sorter = new SortAssetsByDependency(); sorter.Process(bundle, new CassetteSettings()); bundle.Assets[0].ShouldBeSameAs(assetA.Object); bundle.Assets[1].ShouldBeSameAs(assetB.Object); }
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); }