public DiskBackedBundleCache_Tests()
 {
     //The directory should never be called, always just passed into FileHelper which is mocked also, so strict
     //with nothing setup
     directory = new Mock<IDirectory>(MockBehavior.Strict);
     fileHelper = new Mock<IFileHelper>(MockBehavior.Strict);
     fileHelper.Setup(fh => fh.PrepareCachingDirectory(It.IsAny<string>(), It.IsAny<string>()));
     fileHelper.Setup(fh => fh.CreateDirectory(It.IsAny<string>()));
     uncachedToCachedFiles = new Mock<IDictionary<string, string>>(MockBehavior.Strict);
     diskBackedBundleCache = new DiskBackedBundleCache(fileHelper.Object);
     unprocessedAssetPaths = new List<string>();
     fileBundle = new TestableBundle("~/file");
     concatenatedBundle = new TestableBundle("~/concatenated");
     emptyBundle = new TestableBundle("~/empty");
     var stubFileCreation = typeof(Asset_Tests).GetMethod("StubFile", BindingFlags.NonPublic | BindingFlags.Instance);
     fileAsset = new FileAsset((IFile)stubFileCreation.Invoke(new Asset_Tests(), new object[] { "asset content", Type.Missing }), fileBundle);
     fileBundle.Assets.Add(fileAsset);
     var file = (IFile)stubFileCreation.Invoke(new Asset_Tests(), new object[] { "asset content", Type.Missing });
     fileHelper.Setup(fh => fh.GetFileSystemFile(It.IsAny<IDirectory>(), It.IsAny<string>(), It.IsAny<string>()))
         .Returns(file);
     concatenatedAsset = new ConcatenatedAsset(new List<IAsset> {fileAsset} );
     concatenatedBundle.Assets.Add(concatenatedAsset);
     AddToDiskMethodInfo = typeof(DiskBackedBundleCache).GetMethod("AddToDisk", BindingFlags.NonPublic | BindingFlags.Instance);
     GetFromDiskMethodInfo = typeof(DiskBackedBundleCache).GetMethod("GetFromDisk", BindingFlags.NonPublic | BindingFlags.Instance);
 }
        public void ConcatenateAssetsMergesAssetReferences()
        {
            var bundle = new TestableBundle("~");
            var asset1 = new Mock<IAsset>();
            var asset2 = new Mock<IAsset>();
            asset1.Setup(a => a.OpenStream()).Returns(() => "asset1".AsStream());
            asset1.SetupGet(a => a.References).Returns(new[]
            {
                new AssetReference("~\\other1.js", asset1.Object, 0, AssetReferenceType.DifferentBundle)
            });
            asset2.Setup(a => a.OpenStream()).Returns(() => "asset2".AsStream());
            asset2.SetupGet(a => a.References).Returns(new[]
            {
                new AssetReference("~\\other1.js", asset2.Object, 0, AssetReferenceType.DifferentBundle),
                new AssetReference("~\\other2.js", asset2.Object, 0, AssetReferenceType.DifferentBundle)
            });
            bundle.Assets.Add(asset1.Object);
            bundle.Assets.Add(asset2.Object);

            var processor = new ConcatenateAssets();
            processor.Process(bundle, new CassetteSettings(""));

            bundle.Assets[0].References
                .Select(r => r.Path)
                .OrderBy(f => f)
                .SequenceEqual(new[] { "~\\other1.js", "~\\other1.js", "~\\other2.js" })
                .ShouldBeTrue();
        }
Beispiel #3
0
        public void GivenCacheIsUpToDate_WhenInitializeBundlesFromCacheIfUpToDate_ThenBundleAssetsReplacedWithCachedAsset()
        {
            using (var cacheDir = new TempDirectory())
            {
                File.WriteAllText(
                    Path.Combine(cacheDir, "container.xml"),
                    "<?xml version=\"1.0\"?><Container Version=\"VERSION\" AssetCount=\"1\"><Bundle Path=\"~/test\" Hash=\"01\"/></Container>"
                    );
                File.WriteAllText(
                    Path.Combine(cacheDir, "test.bundle"),
                    "asset"
                    );
                var bundleWithAsset = new TestableBundle("~/test");
                var asset = StubAsset();
                bundleWithAsset.Assets.Add(asset.Object);
                var sourceBundles = new[] { bundleWithAsset };

                var settings = new CassetteSettings
                {
                    SourceDirectory = Mock.Of<IDirectory>(),
                    CacheDirectory = new FileSystemDirectory(cacheDir)
                };
                var cache = new BundleCache("VERSION", settings);
                var result = cache.InitializeBundlesFromCacheIfUpToDate(sourceBundles);

                result.ShouldBeTrue();
                bundleWithAsset.Assets[0].OpenStream().ReadToEnd().ShouldEqual("asset");
            }
        }
        public void GivenBundleAdded_WhenGetByPartialPath_ThenBundleReturned()
        {
            var bundle = new TestableBundle("~/test");
            bundles.Add(bundle);

            var actualBundle = bundles.Get("test");

            actualBundle.ShouldBeSameAs(bundle);
        }
        public void GivenBundleAdded_WhenAddAnotherWithSamePath_ThenExceptionIsThrown()
        {
            var bundle = new TestableBundle("~/test");
            bundles.Add(bundle);

            Assert.Throws<ArgumentException>(
                () => bundles.Add(new TestableBundle("~/test"))
            );
        }
Beispiel #6
0
        public void ProcessAddsAssetMinifierToAssetInBundle()
        {
            var bundle = new TestableBundle("~");
            var asset = new Mock<IAsset>();
            bundle.Assets.Add(asset.Object);

            processor.Process(bundle);

            asset.Verify(a => a.AddAssetTransformer(minifier.Object));
        }
 protected void SetupTestBundle()
 {
     var bundle = new TestableBundle("~/test");
     var asset = new StubAsset("~/asset.js", "asset-content");
     bundle.Assets.Add(asset);
     bundle.Hash = new byte[] { 1, 2, 3 };
     bundles.Add(bundle);
     bundles.BuildReferences();
     bundle.Process(new CassetteSettings());
 }
        public void GivenBundlesAdded_WhenEnumerated_ThenBundlesReturned()
        {
            var bundle1 = new TestableBundle("~/test1");
            var bundle2 = new TestableBundle("~/test2");
            bundles.Add(bundle1);
            bundles.Add(bundle2);

            var set = new HashSet<Bundle>(bundles);

            set.SetEquals(new[] { bundle1, bundle2 }).ShouldBeTrue();
        }
        public void GivenCacheOutOfDate_WhenCreateWithBundle_ThenContainerSavedToCache()
        {
            var bundles = new TestableBundle[0];
            var application = CreateSettings();
            CacheIsOutOfDate(bundles);

            var factory = CreateFactory();
            factory.Create(bundles, application);

            cache.Verify(c => c.SaveBundleContainer(It.IsAny<IBundleContainer>()));
        }
        public void GivenCacheOutOfDate_WhenCreateWithBundle_ThenBundleIsProcessed()
        {
            var bundle = new TestableBundle("~/test");
            var bundles = new[] { bundle };
            var application = CreateSettings();
            CacheIsOutOfDate(bundles);

            var factory = CreateFactory();
            factory.Create(bundles, application);

            bundle.WasProcessed.ShouldBeTrue();
        }
 public RawFileRequestHandler_Tests()
 {
     var bundle = new TestableBundle("~");
     var asset = new Mock<IAsset>();
     asset.Setup(a => a.Accept(It.IsAny<IBundleVisitor>()))
         .Callback<IBundleVisitor>(v => v.Visit(asset.Object));
     asset.SetupGet(a => a.References).Returns(new[]
     {
         new AssetReference("~/test.png", asset.Object, -1, AssetReferenceType.RawFilename)
     });
     bundle.Assets.Add(asset.Object);
     bundles = new[] { bundle };
 }
        public void GivenCacheOutOfDate_WhenCreateWithBundle_ThenBundlesInitializedFromNewCache()
        {
            var bundles = new TestableBundle[0];
            var application = CreateSettings();
            CacheIsOutOfDate(bundles);

            var factory = CreateFactory();
            factory.Create(bundles, application);

            // InitializeBundlesFromCacheIfUpToDate should be called a second time.
            // This is to make the bundles get their content from the cached, optimized, data.
            // Otherwise the first time the app runs the bundles are running from their original sources.
            cache.Verify(c => c.InitializeBundlesFromCacheIfUpToDate(bundles), Times.Exactly(2));
        }
        public void WhenProcessBundleContainingJavaScriptAsset_ThenNoTransformsAreAddedToAsset()
        {
            var bundle = new TestableBundle("~");
            var coffeeScriptAsset = new Mock<IAsset>();
            coffeeScriptAsset.SetupGet(a => a.SourceFile.FullPath).Returns("test.js");
            bundle.Assets.Add(coffeeScriptAsset.Object);

            step.Process(bundle, new CassetteSettings(""));

            coffeeScriptAsset.Verify(
                a => a.AddAssetTransformer(
                    It.IsAny<IAssetTransformer>()
                ),
                Times.Never()
            );
        }
        public void WhenProcessBundleContainingCoffeeScriptAsset_ThenCompileCoffeeScriptAssetTransformIsAddedToAsset()
        {
            var bundle = new TestableBundle("~");
            var coffeeScriptAsset = new Mock<IAsset>();
            coffeeScriptAsset.SetupGet(a => a.SourceFile.FullPath).Returns("test.coffee");
            bundle.Assets.Add(coffeeScriptAsset.Object);

            step.Process(bundle, new CassetteSettings(""));

            coffeeScriptAsset.Verify(
                a => a.AddAssetTransformer(
                    It.Is<IAssetTransformer>(
                        t => t is CompileAsset
                    )
                )
            );
        }
        public void GivenTwoAssetsWhereADependsOnB_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 BundleCollection_Add_Tests()
 {
     tempDirectory = new TempDirectory();
     CreateDirectory("test");
     factory = new Mock<IBundleFactory<TestableBundle>>();
     factory.Setup(f => f.CreateBundle(It.IsAny<string>(), It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
         .Returns<string, IEnumerable<IFile>, BundleDescriptor>(
             (path, files, d) => (createdBundle = new TestableBundle(path))
         );
     defaultFileSource = new Mock<IFileSearch>();
     settings = new CassetteSettings("")
     {
         SourceDirectory = new FileSystemDirectory(tempDirectory),
         BundleFactories = { { typeof(TestableBundle), factory.Object } },
         DefaultFileSearches = { { typeof(TestableBundle), defaultFileSource.Object } }
     };
     bundles = new BundleCollection(settings);
 }
Beispiel #17
0
        public void ConcatenateAssetsWithSeparatorPutsSeparatorBetweenEachAsset()
        {
            var bundle = new TestableBundle("~");
            var asset1 = new Mock<IAsset>();
            var asset2 = new Mock<IAsset>();
            asset1.Setup(a => a.OpenStream()).Returns(() => "asset1".AsStream());
            asset2.Setup(a => a.OpenStream()).Returns(() => "asset2".AsStream());
            bundle.Assets.Add(asset1.Object);
            bundle.Assets.Add(asset2.Object);

            var processor = new ConcatenateAssets { Separator = ";" };
            processor.Process(bundle);

            using (var reader = new StreamReader(bundle.Assets[0].OpenStream()))
            {
                reader.ReadToEnd().ShouldEqual("asset1;asset2");
            }
            (bundle.Assets[0] as IDisposable).Dispose();
        }
        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 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 GivenBundleWithTwoAssets_WhenConcatenateAssetsProcessesBundle_ThenASingleAssetReplacesTheTwoOriginalAssets()
        {
            var bundle = new TestableBundle("~");
            var asset1 = new Mock<IAsset>();
            var asset2 = new Mock<IAsset>();
            asset1.Setup(a => a.OpenStream()).Returns(() => ("asset1" + Environment.NewLine + "content").AsStream());
            asset2.Setup(a => a.OpenStream()).Returns(() => ("asset2" + Environment.NewLine + "content").AsStream());
            bundle.Assets.Add(asset1.Object);
            bundle.Assets.Add(asset2.Object);

            var processor = new ConcatenateAssets();
            processor.Process(bundle, new CassetteSettings(""));

            bundle.Assets.Count.ShouldEqual(1);
            using (var reader = new StreamReader(bundle.Assets[0].OpenStream()))
            {
                reader.ReadToEnd().ShouldEqual("asset1" + Environment.NewLine + "content" + Environment.NewLine + "asset2" + Environment.NewLine + "content");
            }
            (bundle.Assets[0] as IDisposable).Dispose();
        }
        public void GivenAssetWithUrlReference_WhenCreate_ThenExternalBundleInContainer()
        {
            var asset = new Mock<IAsset>();
            asset.SetupGet(a => a.References)
                 .Returns(new[] { new AssetReference("http://test.com/", asset.Object, -1, AssetReferenceType.Url) });

            var externalBundle = new TestableBundle("http://test.com/");
            var factory = new Mock<IBundleFactory<Bundle>>();
            factory.Setup(f => f.CreateBundle("http://test.com/", It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
                   .Returns(externalBundle);
            var factories = new Dictionary<Type, IBundleFactory<Bundle>>();
            factories[typeof(TestableBundle)] = factory.Object;
            var containerFactory = CreateFactory(factories);

            var bundle = new TestableBundle("~/test");
            bundle.Assets.Add(asset.Object);
            var settings = CreateSettings();
            var container = containerFactory.Create(new[] { bundle }, settings);

            container.FindBundlesContainingPath("http://test.com/").First().ShouldBeSameAs(externalBundle);
        }
Beispiel #22
0
        public void GivenCacheIsUpToDate_WhenInitializeBundlesFromCacheIfUpToDateWithZeroAssetBundle_ThenReturnTrue()
        {
            using (var cacheDir = new TempDirectory())
            {
                File.WriteAllText(
                    Path.Combine(cacheDir, "container.xml"),
                    "<?xml version=\"1.0\"?><Container Version=\"VERSION\" AssetCount=\"0\"><Bundle Path=\"~/test\" Hash=\"\"/></Container>"
                    );
                var bundle = new TestableBundle("~/test");
                var sourceBundles = new[] { bundle };

                var settings = new CassetteSettings
                {
                    SourceDirectory = Mock.Of<IDirectory>(),
                    CacheDirectory = new FileSystemDirectory(cacheDir)
                };
                var cache = new BundleCache("VERSION", settings);
                var result = cache.InitializeBundlesFromCacheIfUpToDate(sourceBundles);

                result.ShouldBeTrue();
            }
        }
Beispiel #23
0
        public void WhenExternalModuleReferencedTwice_ThenContainerOnlyHasTheExternalModuleOnce()
        {
            var externalBundle = new TestableBundle("http://external.com/api.js");
            var bundle1        = new TestableBundle("~/test1");

            bundle1.AddReference("http://external.com/api.js");
            var bundle2 = new TestableBundle("~/test2");

            bundle2.AddReference("http://external.com/api.js");
            var bundles = new[] { bundle1, bundle2 };

            var factories = new Dictionary <Type, IBundleFactory <Bundle> >();
            var factory   = new Mock <IBundleFactory <Bundle> >();

            factory.Setup(f => f.CreateBundle("http://external.com/api.js", It.IsAny <IEnumerable <IFile> >(), It.IsAny <BundleDescriptor>()))
            .Returns(externalBundle);
            factories[typeof(TestableBundle)] = factory.Object;

            var builder   = CreateFactory(factories);
            var container = builder.Create(bundles, CreateSettings());

            container.Bundles.Count().ShouldEqual(3);
        }
Beispiel #24
0
        public void GivenAssetWithReferenceToUrl_WhenSaveContainer_ThenXmlHasReferenceElementWithUrlAsPath()
        {
            using (var cacheDir = new TempDirectory())
            {
                var settings = new CassetteSettings("")
                {
                    SourceDirectory = Mock.Of <IDirectory>(),
                    CacheDirectory  = new FileSystemDirectory(cacheDir)
                };
                var cache     = new BundleCache("VERSION", settings);
                var bundle    = new TestableBundle("~/bundle-1");
                var asset     = StubAsset();
                var reference = new AssetReference("http://test.com", asset.Object, -1, AssetReferenceType.Url);
                asset.SetupGet(a => a.References)
                .Returns(new[] { reference });
                bundle.Assets.Add(asset.Object);

                cache.SaveBundleContainer(new BundleContainer(new Bundle[] { bundle, new ExternalScriptBundle("http://test.com"), }));

                var xml = File.ReadAllText(Path.Combine(cacheDir, "container.xml"));
                xml.ShouldContain("<Reference Path=\"http://test.com\" />");
            }
        }
Beispiel #25
0
        public void GivenAssetWithCircularReferences_WhenProcess_ThenExceptionThrown()
        {
            var bundle = new TestableBundle("~/test");
            var assetA = new Mock <IAsset>();

            assetA.SetupGet(a => a.Path).Returns("~/test/a.js");
            assetA.SetupGet(a => a.References)
            .Returns(new[] { new AssetReference(assetA.Object.Path, "~/test/b.js", 1, AssetReferenceType.SameBundle) });
            var assetB = new Mock <IAsset>();

            assetB.SetupGet(a => a.Path).Returns("~/test/b.js");
            assetB.SetupGet(a => a.References)
            .Returns(new[] { new AssetReference(assetB.Object.Path, "~/test/a.js", 1, AssetReferenceType.SameBundle) });

            bundle.Assets.Add(assetA.Object);
            bundle.Assets.Add(assetB.Object);

            var sorter = new SortAssetsByDependency();

            Assert.Throws <InvalidOperationException>(
                () => sorter.Process(bundle)
                );
        }
Beispiel #26
0
        public void GivenAssetWithRawFilenameReference_WhenSaveContainer_ThenXmlHasFileElement()
        {
            using (var cacheDir = new TempDirectory())
            {
                var settings = new CassetteSettings("")
                {
                    SourceDirectory = Mock.Of <IDirectory>(),
                    CacheDirectory  = new FileSystemDirectory(cacheDir)
                };
                var cache     = new BundleCache("VERSION", settings);
                var bundle    = new TestableBundle("~/bundle-1");
                var asset     = StubAsset();
                var reference = new AssetReference("~/images/test.png", asset.Object, -1, AssetReferenceType.RawFilename);
                asset.SetupGet(a => a.References)
                .Returns(new[] { reference });
                bundle.Assets.Add(asset.Object);

                cache.SaveBundleContainer(new BundleContainer(new[] { bundle }));

                var xml = File.ReadAllText(Path.Combine(cacheDir, "container.xml"));
                xml.ShouldContain("<File Path=\"~/images/test.png\" />");
            }
        }
Beispiel #27
0
        public void GivenAssetWithReferenceToAnotherBundle_WhenSaveContainer_ThenXmlHasReferenceElementWithReferencedBundlePath()
        {
            using (var cacheDir = new TempDirectory())
            {
                var settings = new CassetteSettings
                {
                    SourceDirectory = Mock.Of <IDirectory>(),
                    CacheDirectory  = new FileSystemDirectory(cacheDir)
                };
                var cache     = new BundleCache("VERSION", settings);
                var bundle1   = new TestableBundle("~/bundle-1");
                var bundle2   = new TestableBundle("~/bundle-2");
                var asset1    = StubAsset();
                var reference = new AssetReference("~/bundle-2", asset1.Object, -1, AssetReferenceType.DifferentBundle);
                asset1.SetupGet(a => a.References)
                .Returns(new[] { reference });
                bundle1.Assets.Add(asset1.Object);

                cache.SaveBundleContainer(new BundleContainer(new[] { bundle1, bundle2 }));

                var xml = File.ReadAllText(Path.Combine(cacheDir, "container.xml"));
                xml.ShouldContain("<Reference Path=\"~/bundle-2\" />");
            }
        }
        public void GivenAssetWithAdHocUrlReference_WhenCreate_ThenExternalBundleIsCreatedAndProcessed()
        {
            var asset = new Mock<IAsset>();
            asset.SetupGet(a => a.SourceFile.FullPath).Returns("~/asset");
            asset.SetupGet(a => a.References)
                 .Returns(new[] { new AssetReference("http://test.com/", asset.Object, -1, AssetReferenceType.Url) });
            asset.Setup(a => a.Accept(It.IsAny<IBundleVisitor>()))
                .Callback<IBundleVisitor>(v => v.Visit(asset.Object));
            asset.Setup(a => a.OpenStream()).Returns(Stream.Null);

            var externalBundle = new TestableBundle("http://test.com/");
            var factory = new Mock<IBundleFactory<Bundle>>();
            factory.Setup(f => f.CreateBundle("http://test.com/", It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
                   .Returns(externalBundle);
            Settings.BundleFactories[typeof(TestableBundle)] = factory.Object;

            var bundle = new TestableBundle("~/test");
            bundle.Assets.Add(asset.Object);

            var containerFactory = CreateFactory(new[] { bundle });
            containerFactory.CreateBundleContainer();

            externalBundle.WasProcessed.ShouldBeTrue();
        }
        public GivenBundleExists_WhenProcessRequest()
        {
            var bundle = new TestableBundle("~/test") { ContentType = "expected-content-type" };
            var asset = new StubAsset("~/asset.js", "asset-content");
            bundle.Hash = new byte[] { 1, 2, 3 };
            bundle.Assets.Add(asset);
            bundles.Add(bundle);
            bundles.BuildReferences();
            bundle.Process(new CassetteSettings());

            var handler = CreateRequestHandler();
            handler.ProcessRequest("~/test");
        }
        public GivenBundleExists_WhenProcessRequest()
        {
            var bundle = new TestableBundle("~/test") { ContentType = "expected-content-type" };
            var asset = new Mock<IAsset>();
            asset.Setup(a => a.OpenStream())
                    .Returns(() => "asset-content".AsStream());
            asset.SetupGet(a => a.Hash).Returns(new byte[] { 1, 2, 3 });
            bundle.Assets.Add(asset.Object);
            container.Setup(c => c.FindBundleContainingPath<TestableBundle>("~/test"))
                     .Returns(bundle);

            var handler = CreateRequestHandler("test_010203");
            handler.ProcessRequest();
        }
        public void WhenExternalModuleReferencedTwice_ThenContainerOnlyHasTheExternalModuleOnce()
        {
            var externalBundle = new TestableBundle("http://external.com/api.js");
            var bundle1 = new TestableBundle("~/test1");
            bundle1.AddReference("http://external.com/api.js");
            var bundle2 = new TestableBundle("~/test2");
            bundle2.AddReference("http://external.com/api.js");
            var bundles = new[] { bundle1, bundle2 };

            var factories = new Dictionary<Type, IBundleFactory<Bundle>>();
            var factory = new Mock<IBundleFactory<Bundle>>();
            factory.Setup(f => f.CreateBundle("http://external.com/api.js", It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
                   .Returns(externalBundle);
            factories[typeof(TestableBundle)] = factory.Object;

            var builder = CreateFactory(factories);
            var container = builder.Create(bundles, CreateSettings());

            container.Bundles.Count().ShouldEqual(3);
        }
 protected void SetupTestBundle()
 {
     var bundle = new TestableBundle("~/test");
     var asset = new Mock<IAsset>();
     asset.Setup(a => a.OpenStream())
             .Returns(() => "asset-content".AsStream());
     asset.SetupGet(a => a.Hash).Returns(new byte[] { 1, 2, 3 });
     bundle.Assets.Add(asset.Object);
     container.Setup(c => c.FindBundleContainingPath<TestableBundle>("~/test"))
              .Returns(bundle);
 }
Beispiel #33
0
 public AssignHash_Tests()
 {
     assignHash = new AssignHash();
     bundle     = new TestableBundle("~");
     sha1       = SHA1.Create();
 }
        public void WhenDispose_ThenBundleIsDisposed()
        {
            var bundle = new TestableBundle("~");
            var application = StubApplication(createBundles: settings => new BundleCollection(settings) { bundle });

            application.Dispose();

            bundle.WasDisposed.ShouldBeTrue();
        }
        public void GivenBundleWithAdHocUrlReference_WhenCreate_ThenExternalBundleIsCreatedAndProcessed()
        {
            var externalBundle = new TestableBundle("http://test.com/");
            var factory = new Mock<IBundleFactory<Bundle>>();
            factory.Setup(f => f.CreateBundle("http://test.com/", It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
                   .Returns(externalBundle);
            var factories = new Dictionary<Type, IBundleFactory<Bundle>>();
            factories[typeof(TestableBundle)] = factory.Object;
            var containerFactory = CreateFactory(factories);

            var bundle = new TestableBundle("~/test");
            bundle.AddReference("http://test.com/");
            var settings = CreateSettings();

            containerFactory.Create(new[] { bundle }, settings);

            externalBundle.WasProcessed.ShouldBeTrue();
        }
        public void WhenCreateWithBundle_ThenBundleIsProcessed()
        {
            var bundle = new TestableBundle("~/test");
            var settings = CreateSettings();

            var builder = CreateFactory(new Dictionary<Type, IBundleFactory<Bundle>>());
            builder.Create(new[] { bundle }, settings);

            bundle.WasProcessed.ShouldBeTrue();
        }