public void ProcessAddsReferencesToJavaScriptAssetInBundleAndIgnoresTypeScriptReferences() { var asset = new Mock<IAsset>(); asset.SetupGet(a => a.Path).Returns("~/asset.js"); // Remember TS files compile down to JS files var typeScriptSource = @" /// <reference path=""../../../../typings/jquery/jquery.d.ts"" /> /// <reference path=""~/Scripts/jquery.js"" /> // @reference ""~/bundles/bundle1"" // @reference ~/bundles/bundle2 $(document).ready(function () { });"; asset.Setup(a => a.OpenStream()) .Returns(typeScriptSource.AsStream()); var bundle = new ScriptBundle("~"); bundle.Assets.Add(asset.Object); var processor = new ParseJavaScriptNotTypeScriptReferences(); processor.Process(bundle); asset.Verify(a => a.AddReference("../../../../typings/jquery/jquery.d.ts", 2), Times.Never()); asset.Verify(a => a.AddReference("~/Scripts/jquery.js", 3)); asset.Verify(a => a.AddReference("~/bundles/bundle1", 4)); asset.Verify(a => a.AddReference("~/bundles/bundle2", 5)); }
static ScriptBundle StubScriptBundle(string path) { var bundle = new ScriptBundle(path); var asset = new Mock<IAsset>(); asset.SetupGet(a => a.Hash).Returns(new byte[] { 1, 2, 3 }); bundle.Assets.Add(asset.Object); return bundle; }
public void ModulePathIsBuiltFromAssetPath() { var asset = new StubAsset("~/test.js"); var bundle = new ScriptBundle("~"); var module = new AnonymousModule(asset, bundle); module.ModulePath.ShouldEqual("test"); }
public void WhenProcessBundle_ThenHashIsAssigned() { var bundle = new ScriptBundle("~"); pipeline.Process(bundle); bundle.Hash.ShouldNotBeNull(); }
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"); }
public void ModulePathIsRequired() { var asset = new StubAsset("~/test.js"); var bundle = new ScriptBundle("~"); Assert.Throws<ArgumentNullException>( () => new NamedModule(asset, bundle, null) ); }
static ScriptBundle StubScriptBundle(string path) { var bundle = new ScriptBundle(path) { Hash = new byte[] { 1, 2, 3 } }; return bundle; }
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"); }
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"); }
public void WhenProcessBundle_ThenHashIsAssigned() { var pipeline = new ScriptPipeline(); var bundle = new ScriptBundle("~"); pipeline.Process(bundle, new CassetteSettings("")); bundle.Hash.ShouldNotBeNull(); }
public ScriptAndTemplateBundle(string name, ScriptBundle bundle, HtmlTemplateBundle templateBundle, Func<IBundleProcessor<HtmlTemplateBundle>> templateProcessor) : base(name) { ScriptBundle = bundle; HtmlTemplateBundle = templateBundle; ContentType = "text/javascript"; TemplateProcessor = templateProcessor(); ScriptProcessor = new ScriptPipeline(); }
void GivenBundle(string path, params IAsset[] assets) { var bundle = new ScriptBundle(path); foreach (var asset in assets) { bundle.Assets.Add(asset); } bundles.Add(bundle); }
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;});"); }
public void GivenProductionMode_WhenProcessBundle_ThenRendererIsScriptBundleHtmlRenderer() { settings.IsDebuggingEnabled = false; var bundle = new ScriptBundle("~/test"); pipeline.Process(bundle); bundle.Renderer.ShouldBeType<ScriptBundleHtmlRenderer>(); }
public void RenderCallsRenderer() { var bundle = new ScriptBundle("~"); var renderer = new Mock<IBundleHtmlRenderer<ScriptBundle>>(); bundle.Renderer = renderer.Object; bundle.Render(); renderer.Verify(r => r.Render(bundle)); }
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});"); }
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;})"); }
public void Configure(BundleCollection bundles, CassetteSettings settings) { var script = new ScriptBundle("cassette.web.jasmine"); script.Assets.Add(new ResourceAsset("Cassette.Web.Jasmine.jasmine.js", GetType().Assembly)); bundles.Add(script); var css = new StylesheetBundle("cassette.web.jasmine"); css.Assets.Add(new ResourceAsset("Cassette.Web.Jasmine.jasmine.css", GetType().Assembly)); bundles.Add(css); }
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(){})"); }
public ScriptBundleSerializer_Tests() { bundle = new ScriptBundle("~") { Hash = new byte[0], Condition = "CONDITION", Renderer = new ScriptBundleHtmlRenderer(Mock.Of<IUrlGenerator>()) }; SerializeToElement(); }
public ScriptBundleSerializer_Tests() { bundle = new ScriptBundle("~") { Hash = new byte[0], Condition = "CONDITION", Renderer = new ConstantHtmlRenderer<ScriptBundle>("", new VirtualDirectoryPrepender("/")) }; SerializeToElement(); }
public ScriptBundleSerializer_Tests() { bundle = new ScriptBundle("~") { Hash = new byte[0], Condition = "CONDITION", Renderer = new ScriptBundleHtmlRenderer(Mock.Of <IUrlGenerator>()) }; SerializeToElement(); }
public ScriptBundleSerializer_Tests() { bundle = new ScriptBundle("~") { Hash = new byte[0], Condition = "CONDITION", Renderer = new ConstantHtmlRenderer <ScriptBundle>("", new VirtualDirectoryPrepender("/")) }; SerializeToElement(); }
public void GivenProductionMode_WhenProcessBundle_ThenRendererIsScriptBundleHtmlRenderer() { var settings = new CassetteSettings("") { IsDebuggingEnabled = false }; var bundle = new ScriptBundle("~/test"); var pipeline = new ScriptPipeline(); pipeline.Process(bundle, settings); bundle.Renderer.ShouldBeType<ScriptBundleHtmlRenderer>(); }
public void RenderCallsRenderer() { var bundle = new ScriptBundle("~"); var renderer = new Mock <IBundleHtmlRenderer <ScriptBundle> >(); bundle.Renderer = renderer.Object; bundle.Render(); renderer.Verify(r => r.Render(bundle)); }
public void GivenCompileCoffeeScriptIsTrue_WhenProcessBundle_ThenCompileAssetTransformerIsAddedToAsset() { var pipeline = new ScriptPipeline { CompileCoffeeScript = true }; var bundle = new ScriptBundle("~"); var asset = StubCoffeeScriptAsset(); bundle.Assets.Add(asset.Object); pipeline.Process(bundle, new CassetteSettings("")); asset.Verify(a => a.AddAssetTransformer(It.IsAny<CompileAsset>())); }
public void GivenCompileCoffeeScriptIsTrue_WhenProcessBundle_ThenCompileAssetTransformerIsAddedToAsset() { var pipeline = new ScriptPipeline().CompileCoffeeScript(); var bundle = new ScriptBundle("~"); var asset = StubCoffeeScriptAsset(); bundle.Assets.Add(asset.Object); pipeline.Process(bundle, new CassetteSettings("")); asset.Verify(a => a.AddAssetTransformer(It.IsAny <CompileAsset>())); }
public void GivenRendererWithUrlGenerator_WhenRenderBundle_ThenScriptHtmlIsReturned() { var urlGenerator = new Mock<IUrlGenerator>(); var renderer = new ScriptBundleHtmlRenderer(urlGenerator.Object); var bundle = new ScriptBundle("~/test"); urlGenerator.Setup(g => g.CreateBundleUrl(bundle)) .Returns("URL"); var html = renderer.Render(bundle); html.ShouldEqual("<script src=\"URL\" type=\"text/javascript\"></script>"); }
public void GivenLocationAlreadyRendered_WhenAddReferenceToThatLocation_ThenExceptionThrown() { var bundle = new ScriptBundle("~/test"); bundleContainer.Setup(c => c.FindBundleContainingPath<Bundle>("~/test")) .Returns(bundle); builder.Render<ScriptBundle>("location"); Assert.Throws<InvalidOperationException>( () => builder.Reference("~/test", "location") ); }
public void GivenRendererWithUrlGenerator_WhenRenderBundle_ThenScriptHtmlIsReturned() { var urlGenerator = new Mock <IUrlGenerator>(); var renderer = new ScriptBundleHtmlRenderer(urlGenerator.Object); var bundle = new ScriptBundle("~/test"); urlGenerator.Setup(g => g.CreateBundleUrl(bundle)) .Returns("URL"); var html = renderer.Render(bundle); html.ShouldEqual("<script src=\"URL\" type=\"text/javascript\"></script>"); }
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 {};});"); }
public void GivenRendererWithUrlGeneratorWithHtmlAttributes_WhenRenderBundle_ThenScriptHtmlIsReturned() { var urlGenerator = new Mock<IUrlGenerator>(); var renderer = new ScriptBundleHtmlRenderer(urlGenerator.Object); var bundle = new ScriptBundle("~/test"); bundle.HtmlAttributes.Add( new { Async = "async", @class = "isDismissed" } ); urlGenerator.Setup(g => g.CreateBundleUrl(bundle)) .Returns("URL"); var html = renderer.Render(bundle); html.ShouldEqual("<script src=\"URL\" type=\"text/javascript\" async=\"async\" class=\"isDismissed\"></script>"); }
public void GivenBundleAReferencesBundleB_WhenAddReferenceToBundleA_ThenGetBundlesReturnsBoth() { var bundleA = new ScriptBundle("~/a"); var bundleB = new ScriptBundle("~/b"); bundleContainer.Setup(c => c.FindBundleContainingPath<Bundle>("~/a")) .Returns(bundleA); bundleContainer.Setup(c => c.IncludeReferencesAndSortBundles(It.IsAny<IEnumerable<Bundle>>())) .Returns(new[] { bundleB, bundleA }); builder.Reference("a", null); builder.GetBundles(null).SequenceEqual(new[] { bundleB, bundleA }).ShouldBeTrue(); }
public void GivenCompileCoffeeScriptIsFalse_WhenProcessBundle_ThenCompileAssetTransformerNotAddedToAsset() { var pipeline = new ScriptPipeline { CompileCoffeeScript = false }; var bundle = new ScriptBundle("~"); var asset = StubCoffeeScriptAsset(); bundle.Assets.Add(asset.Object); pipeline.Process(bundle, new CassetteSettings()); asset.Verify(a => a.AddAssetTransformer(It.IsAny <CompileAsset>()), Times.Never()); }
public void GivenDebugMode_WhenProcessBundle_ThenRendererIsDebugScriptBundleHtmlRenderer() { var settings = new CassetteSettings { IsDebuggingEnabled = true }; var bundle = new ScriptBundle("~/test"); var pipeline = new ScriptPipeline(); pipeline.Process(bundle, settings); bundle.Renderer.ShouldBeType <DebugScriptBundleHtmlRenderer>(); }
public void GivenRendererWithUrlGeneratorWithHtmlAttributes_WhenRenderBundle_ThenScriptHtmlIsReturned() { var urlGenerator = new Mock <IUrlGenerator>(); var renderer = new ScriptBundleHtmlRenderer(urlGenerator.Object); var bundle = new ScriptBundle("~/test"); bundle.HtmlAttributes.Add(new { Async = "async", @class = "isDismissed" }); urlGenerator.Setup(g => g.CreateBundleUrl(bundle)) .Returns("URL"); var html = renderer.Render(bundle); html.ShouldEqual("<script src=\"URL\" type=\"text/javascript\" async=\"async\" class=\"isDismissed\"></script>"); }
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 GivenPipeline() { bundle = new ScriptBundle("~/"); asset = new Mock<IAsset>(); asset.SetupGet(a => a.Path).Returns("~/test.js"); asset.Setup(a => a.OpenStream()).Returns(Stream.Null); bundle.Assets.Add(asset.Object); var settings = new CassetteSettings(); var container = new TinyIoCContainer(); container.Register(Mock.Of<IJavaScriptMinifier>()); container.Register(Mock.Of<IUrlGenerator>()); container.Register(settings); pipeline = new ScriptPipeline(container, settings); }
public GivenPipeline() { bundle = new ScriptBundle("~/"); asset = new Mock <IAsset>(); asset.SetupGet(a => a.Path).Returns("~/test.js"); asset.Setup(a => a.OpenStream()).Returns(Stream.Null); bundle.Assets.Add(asset.Object); var settings = new CassetteSettings(); var container = new TinyIoCContainer(); container.Register(Mock.Of <IJavaScriptMinifier>()); container.Register(Mock.Of <IUrlGenerator>()); container.Register(settings); pipeline = new ScriptPipeline(container, settings); }
public void GivenScriptBundleWithNotIECondition_WhenRender_ThenHtmlConditionalCommentWrapsLinkButLeavesScriptVisibleToAllBrowsers() { var urlGenerator = new Mock <IUrlGenerator>(); var renderer = new ScriptBundleHtmlRenderer(urlGenerator.Object); var bundle = new ScriptBundle("~/test") { Condition = "(gt IE 9)| !IE" }; urlGenerator.Setup(g => g.CreateBundleUrl(bundle)) .Returns("URL"); var html = renderer.Render(bundle); html.ShouldEqual( "<!--[if " + bundle.Condition + "]><!-->" + Environment.NewLine + "<script src=\"URL\" type=\"text/javascript\"></script>" + Environment.NewLine + "<!-- <![endif]-->" ); }
public void GivenScriptBundleWithCondition_WhenRender_ThenHtmlConditionalCommentWrapsLink() { var urlGenerator = new Mock <IUrlGenerator>(); var renderer = new ScriptBundleHtmlRenderer(urlGenerator.Object); var bundle = new ScriptBundle("~/test") { Condition = "CONDITION" }; urlGenerator.Setup(g => g.CreateBundleUrl(bundle)) .Returns("URL"); var html = renderer.Render(bundle); html.ShouldEqual( "<!--[if CONDITION]>" + Environment.NewLine + "<script src=\"URL\" type=\"text/javascript\"></script>" + Environment.NewLine + "<![endif]-->" ); }
public GivenPiplineWhereCompileCoffeeScriptWithCustomCompiler() { bundle = new ScriptBundle("~/"); asset = new Mock <IAsset>(); asset.SetupGet(a => a.Path).Returns("~/test.coffee"); asset.Setup(a => a.OpenStream()).Returns(Stream.Null); bundle.Assets.Add(asset.Object); compiler = new Mock <ICoffeeScriptCompiler>(); var settings = new CassetteSettings(); var container = new TinyIoCContainer(); container.Register(compiler.Object); container.Register(Mock.Of <IJavaScriptMinifier>()); container.Register(Mock.Of <IUrlGenerator>()); container.Register(settings); var modifier = new CoffeeScriptBundlePipelineModifier(); pipeline = new ScriptPipeline(container, settings); pipeline = modifier.Modify(pipeline); }
public void GivenBundleWithTwoAssets_WhenRenderBundle_ThenScriptsElementReturnedForEachAsset() { var bundle = new ScriptBundle("~/test"); bundle.Assets.Add(new StubAsset()); bundle.Assets.Add(new StubAsset()); var urlGenerator = new Mock <IUrlGenerator>(); var assetUrls = new Queue <string>(new[] { "asset1", "asset2" }); urlGenerator.Setup(g => g.CreateAssetUrl(It.IsAny <IAsset>())) .Returns(assetUrls.Dequeue); var renderer = new DebugScriptBundleHtmlRenderer(urlGenerator.Object); var html = renderer.Render(bundle); html.ShouldEqual( "<script src=\"asset1\" type=\"text/javascript\"></script>" + Environment.NewLine + "<script src=\"asset2\" type=\"text/javascript\"></script>" ); }
void DeserializeBundle() { bundle = deserializer.Deserialize(element, directory); }
public void HtmlAttributesTypeIsTextJavaScript() { var bundle = new ScriptBundle("~"); bundle.HtmlAttributes["type"].ShouldEqual("text/javascript"); }