Example #1
0
 public void ModulePathIsRequired()
 {
     var asset = new StubAsset("~/test.js");
     var bundle = new ScriptBundle("~");
     Assert.Throws<ArgumentNullException>(
         () => new NamedModule(asset, bundle, null)
     );
 }
Example #2
0
        public void ModulePathIsAssignedFromConstructorArgument()
        {
            var asset = new StubAsset("~/test.js");
            var bundle = new ScriptBundle("~");
            var module = new NamedModule(asset, bundle, "module/path");

            module.ModulePath.ShouldEqual("module/path");
        }
Example #3
0
        public void ModulePathIsBuiltFromAssetPath()
        {
            var asset = new StubAsset("~/test.js");
            var bundle = new ScriptBundle("~");

            var module = new AnonymousModule(asset, bundle);
            module.ModulePath.ShouldEqual("test");
        }
Example #4
0
        public void ModulePathIsAssignedFromConstructorArgument()
        {
            var asset  = new StubAsset("~/test.js");
            var bundle = new ScriptBundle("~");
            var module = new NamedModule(asset, bundle, "module/path");

            module.ModulePath.ShouldEqual("module/path");
        }
Example #5
0
        public void ModulePathIsRequired()
        {
            var asset  = new StubAsset("~/test.js");
            var bundle = new ScriptBundle("~");

            Assert.Throws <ArgumentNullException>(
                () => new NamedModule(asset, bundle, null)
                );
        }
Example #6
0
        public void AliasIsFromFilenameConvertsInvalidCharactersToUnderscores()
        {
            var asset = new StubAsset("~/test-test.js", "var test_test = {};");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            module.Alias.ShouldEqual("test_test");
        }
Example #7
0
        public void ModulePathIsBuiltFromAssetPath()
        {
            var asset  = new StubAsset("~/test.js");
            var bundle = new ScriptBundle("~");

            var module = new AnonymousModule(asset, bundle);

            module.ModulePath.ShouldEqual("test");
        }
Example #8
0
        public void AliasIsFilenameWithoutExtension()
        {
            var asset  = new StubAsset("~/test.js", "var test = {};");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            module.Alias.ShouldEqual("test");
        }
Example #9
0
        public void AliasIsFilenameWithoutExtension()
        {
            var asset = new StubAsset("~/test.js", "var test = {};");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            module.Alias.ShouldEqual("test");
        }
Example #10
0
        public void GivenBundleHasOneAssetThenBundleHashIsSHA1OfAssetContent()
        {
            var asset = new StubAsset(content: "content");
            bundle.Assets.Add(asset);

            ProcessBundleWithAssignHash();

            AssertHashIsSha1Of("content");
        }
Example #11
0
        public void AliasIsFromFilenameConvertsInvalidCharactersToUnderscores()
        {
            var asset  = new StubAsset("~/test-test.js", "var test_test = {};");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            module.Alias.ShouldEqual("test_test");
        }
Example #12
0
        public void GivenBundleHasOneAssetThenBundleHashIsSHA1OfAssetContent()
        {
            var asset = new StubAsset(content: "content");

            bundle.Assets.Add(asset);

            ProcessBundleWithAssignHash();

            AssertHashIsSha1Of("content");
        }
 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());
 }
Example #14
0
        public void GivenScriptHasNoTopLevelVarOrReturnExpressionThenDefineHasNoReturn()
        {
            var asset = new StubAsset("~/test.js");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            var output = asset.OpenStream().ReadToEnd();
            output.ShouldEqual("define(\"test\",[],function(){\r\n});");
        }
Example #15
0
        public void AssetIsNotMinified()
        {
            var asset = new StubAsset("~/test.js", "define([],function(){var x = 1;})");
            var bundle = new ScriptBundle("~");

            var module = new AnonymousModule(asset, bundle);

            var output = asset.OpenStream().ReadToEnd();
            output.ShouldEqual("define(\"test\",[],function(){var x = 1;})");
        }
Example #16
0
        public void AssetIsWrappedInDefineCall()
        {
            var asset = new StubAsset("~/test.js", "var test = {};");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            var output = asset.OpenStream().ReadToEnd();
            output.ShouldEqual("define(\"test\",[],function(){var test = {};\r\nreturn test;});");
        }
Example #17
0
        public void AssetIsTransformedToIncludeModulePathInDefineCallWithNoDependencies()
        {
            var asset = new StubAsset("~/test.js", "define(function(){})");
            var bundle = new ScriptBundle("~");

            var module = new AnonymousModule(asset, bundle);

            var output = asset.OpenStream().ReadToEnd();
            output.ShouldEqual("define(\"test\",function(){})");
        }
Example #18
0
        public void AssetIsWrappedInDefineCall()
        {
            var asset  = new StubAsset("~/test.js", "var test = {};");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            var output = asset.OpenStream().ReadToEnd();

            output.ShouldEqual("define(\"test\",[],function(){var test = {};\r\nreturn test;});");
        }
 static StylesheetBundle CreateStylesheetBundle()
 {
     var bundle = new StylesheetBundle("~");
     var asset = new StubAsset(
         "~/asset.css",
         ".a { background-image:url(image-a.png);background-repeat:no-repeat;width:20px;height:20px }\n" +
         ".b { background-image:url(image-b.png);background-repeat:no-repeat;width:20px;height:20px }"
         );
     bundle.Assets.Add(asset);
     return bundle;
 }
Example #20
0
        public void AssetIsNotMinified()
        {
            var asset  = new StubAsset("~/test.js", "define([],function(){var x = 1;})");
            var bundle = new ScriptBundle("~");

            var module = new AnonymousModule(asset, bundle);

            var output = asset.OpenStream().ReadToEnd();

            output.ShouldEqual("define(\"test\",[],function(){var x = 1;})");
        }
Example #21
0
        public void AssetIsTransformedToIncludeModulePathInDefineCallWithNoDependencies()
        {
            var asset  = new StubAsset("~/test.js", "define(function(){})");
            var bundle = new ScriptBundle("~");

            var module = new AnonymousModule(asset, bundle);

            var output = asset.OpenStream().ReadToEnd();

            output.ShouldEqual("define(\"test\",function(){})");
        }
Example #22
0
        public void GivenBundleHasOneAssetThatContainsTwoAssetsThenBundleHashIsSHA1OfTheTwoChildAssets()
        {
            var childAsset1 = new StubAsset(content: "asset-1");
            var childAsset2 = new StubAsset(content: "asset-2");
            var combinedAsset = CombinedAsset(childAsset1, childAsset2);
            bundle.Assets.Add(combinedAsset);

            ProcessBundleWithAssignHash();

            AssertHashIsSha1Of("asset-1asset-2");
        }
Example #23
0
        public void GivenScriptHasNoTopLevelVarOrReturnExpressionThenDefineHasNoReturn()
        {
            var asset  = new StubAsset("~/test.js");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            var output = asset.OpenStream().ReadToEnd();

            output.ShouldEqual("define(\"test\",[],function(){\r\n});");
        }
Example #24
0
        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());
        }
Example #25
0
        static StylesheetBundle CreateStylesheetBundle()
        {
            var bundle = new StylesheetBundle("~");
            var asset  = new StubAsset(
                "~/asset.css",
                ".a { background-image:url(image-a.png);background-repeat:no-repeat;width:20px;height:20px }\n" +
                ".b { background-image:url(image-b.png);background-repeat:no-repeat;width:20px;height:20px }"
                );

            bundle.Assets.Add(asset);
            return(bundle);
        }
Example #26
0
        public void GivenBundleHasOneAssetThatContainsTwoAssetsThenBundleHashIsSHA1OfTheTwoChildAssets()
        {
            var childAsset1   = new StubAsset(content: "asset-1");
            var childAsset2   = new StubAsset(content: "asset-2");
            var combinedAsset = CombinedAsset(childAsset1, childAsset2);

            bundle.Assets.Add(combinedAsset);

            ProcessBundleWithAssignHash();

            AssertHashIsSha1Of("asset-1asset-2");
        }
Example #27
0
        public void DefineCallReturnsModuleReturnExpression()
        {
            var asset = new StubAsset("~/test.js", "var test = {};");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object)
            {
                ModuleReturnExpression = "{}"
            };

            var output = asset.OpenStream().ReadToEnd();
            output.ShouldEqual("define(\"test\",[],function(){var test = {};\r\nreturn {};});");
        }
Example #28
0
        public void DefineCallReturnsModuleReturnExpression()
        {
            var asset  = new StubAsset("~/test.js", "var test = {};");
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object)
            {
                ModuleReturnExpression = "{}"
            };

            var output = asset.OpenStream().ReadToEnd();

            output.ShouldEqual("define(\"test\",[],function(){var test = {};\r\nreturn {};});");
        }
Example #29
0
        public void GivenRequestWithMatchingETag_WhenProcessRequest_ThenReturn304NotModifiedResponse()
        {
            bundles.Add(new TestableBundle("~/test"));
            var asset = new StubAsset("~/test/asset.js", hash: new byte[] { 1, 2, 3 });

            bundles.First().Assets.Add(asset);

            using (outputStream = new MemoryStream())
            {
                requestHeaders.Add("If-None-Match", "\"010203\"");
                handler.ProcessRequest("~/test/asset.js");
            }

            response.VerifySet(r => r.StatusCode = 304);
        }
Example #30
0
        public void GivenRequestWithDifferingHash_WhenProcessRequest_ThenReturn3NoCacheResponse()
        {
            bundles.Add(new TestableBundle("~/test"));
            var asset = new StubAsset("~/test/asset.js", hash: new byte[] { 1, 2, 3 });

            bundles.First().Assets.Add(asset);

            request.SetupGet(x => x.RawUrl).Returns("~/test/HASH-MISMATCH/asset.js");
            using (outputStream = new MemoryStream()) {
                requestHeaders.Add("If-None-Match", "\"010203\"");
                handler.ProcessRequest("~/test/asset.js");
            }

            response.VerifySet(r => r.CacheControl = "no-cache");
        }
Example #31
0
        public void AssetReferencesAreTranslatedIntoModuleDependencies()
        {
            SetupFakeModule("foo");
            SetupFakeModule("bar");

            var asset = new StubAsset("~/test.js");
            asset.ReferenceList.Add(new AssetReference("~/test.js", "~/foo.js", 1, AssetReferenceType.SameBundle));
            asset.ReferenceList.Add(new AssetReference("~/test.js", "~/bar.js", 1, AssetReferenceType.SameBundle));
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            var output = asset.OpenStream().ReadToEnd();
            output.ShouldEqual("define(\"test\",[\"foo\",\"bar\"],function(foo,bar){\r\n});");
        }
Example #32
0
        ScriptBundle StubBundle()
        {
            var bundle = new ScriptBundle("~")
            {
                Processor = new ScriptPipeline()
            };
            var asset = new StubAsset(fullPath: "~/test.js");

            asset.References.Add(new AssetReference("http://example.org/", asset, 1, AssetReferenceType.Url));
            bundle.Assets.Add(asset);
            bundle.Process(new CassetteSettings(""));
            var urlModifier = Mock.Of <IUrlModifier>();

            bundle.Renderer = new ConstantHtmlRenderer <ScriptBundle>("", urlModifier);
            return(bundle);
        }
Example #33
0
        public void AssetReferencesAreTranslatedIntoModuleDependencies()
        {
            SetupFakeModule("foo");
            SetupFakeModule("bar");

            var asset = new StubAsset("~/test.js");

            asset.ReferenceList.Add(new AssetReference("~/test.js", "~/foo.js", 1, AssetReferenceType.SameBundle));
            asset.ReferenceList.Add(new AssetReference("~/test.js", "~/bar.js", 1, AssetReferenceType.SameBundle));
            var bundle = new ScriptBundle("~");

            var module = new PlainScript(asset, bundle, modules.Object);

            var output = asset.OpenStream().ReadToEnd();

            output.ShouldEqual("define(\"test\",[\"foo\",\"bar\"],function(foo,bar){\r\n});");
        }
        public void AssetIsShimmed()
        {
            var asset1 = new StubAsset("~/app/test1.js");
            var asset2 = new StubAsset("~/app/test2.js");
            asset2.AddRawFileReference(asset1.Path);

            GivenBundle(
                "~/app",
                asset1,
                asset2
                );

            WhenBuildScriptForDebug(c => c.Shim("~/app/test2.js"));
            Paths["app/test1"].ShouldEqual("ASSET-URL");
            Paths["app/test2"].ShouldEqual("ASSET-URL");
            string dependency = Config.shim["app/test2"][0].ToString();
            dependency.ShouldEqual("app/test1");
        }
Example #35
0
        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");
        }
Example #36
0
        public void DontSpriteWhenDebugging()
        {
            var bundle = new StylesheetBundle("~");
            var asset = new StubAsset(
                "~/asset.css",
                ".a { background-image:url(image-a.png);width:20px;height:20px }\n" +
                ".b { background-image:url(image-b.png);width:20px;height:20px }"
            );
            bundle.Assets.Add(asset);

            var settings = new CassetteSettings
            {
                IsDebuggingEnabled = true,
                CacheDirectory = new FakeFileSystem()
            };

            var processor = new SpriteImages(settings, () => null);
            processor.Process(bundle);
            // Would throw exception if it tried to sprite the CSS.
        }
Example #37
0
        public void DontSpriteWhenDebugging()
        {
            var bundle = new StylesheetBundle("~");
            var asset  = new StubAsset(
                "~/asset.css",
                ".a { background-image:url(image-a.png);width:20px;height:20px }\n" +
                ".b { background-image:url(image-b.png);width:20px;height:20px }"
                );

            bundle.Assets.Add(asset);

            var settings = new CassetteSettings
            {
                IsDebuggingEnabled = true,
                CacheDirectory     = new FakeFileSystem()
            };

            var processor = new SpriteImages(settings, () => null);

            processor.Process(bundle);
            // Would throw exception if it tried to sprite the CSS.
        }
        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");
        }
 ScriptBundle StubBundle()
 {
     var bundle = new ScriptBundle("~")
     {
         Processor = new ScriptPipeline()
     };
     var asset = new StubAsset(fullPath: "~/test.js");
     asset.References.Add(new AssetReference("http://example.org/", asset, 1, AssetReferenceType.Url));
     bundle.Assets.Add(asset);
     bundle.Process(new CassetteSettings(""));
     var urlModifier = Mock.Of<IUrlModifier>();
     bundle.Renderer = new ConstantHtmlRenderer<ScriptBundle>("", urlModifier);
     return bundle;
 }
        public void GivenRequestWithDifferingHash_WhenProcessRequest_ThenReturn3NoCacheResponse()
        {
            bundles.Add(new TestableBundle("~/test"));
            var asset = new StubAsset("~/test/asset.js", hash: new byte[] { 1, 2, 3 });
            bundles.First().Assets.Add(asset);

            request.SetupGet(x => x.RawUrl).Returns("~/test/HASH-MISMATCH/asset.js");
            using(outputStream = new MemoryStream()) {
                requestHeaders.Add("If-None-Match", "\"010203\"");
                handler.ProcessRequest("~/test/asset.js");
            }

            response.VerifySet(r => r.CacheControl = "no-cache");
        }
        public void GivenRequestWithMatchingETag_WhenProcessRequest_ThenReturn304NotModifiedResponse()
        {
            bundles.Add(new TestableBundle("~/test"));
            var asset = new StubAsset("~/test/asset.js", hash: new byte[] { 1, 2, 3 });
            bundles.First().Assets.Add(asset);

            using (outputStream = new MemoryStream())
            {
                requestHeaders.Add("If-None-Match", "\"010203\"");
                handler.ProcessRequest("~/test/asset.js");
            }

            response.VerifySet(r => r.StatusCode = 304);
        }