Exemple #1
0
 internal override void Process(CassetteSettings settings)
 {
     // Any fallback assets are processed like a regular ScriptBundle.
     base.Process(settings);
     // We just need a special renderer instead.
     externalRenderer = new ExternalScriptBundleHtmlRenderer(Renderer, settings);
 }
Exemple #2
0
        public void WhenRenderExternalScriptBundle_ThenHtmlIsScriptElement()
        {
            var bundle           = new ExternalScriptBundle("http://test.com/");
            var fallbackRenderer = new Mock <IBundleHtmlRenderer <ScriptBundle> >();

            var renderer = new ExternalScriptBundleHtmlRenderer(fallbackRenderer.Object, settings);
            var html     = renderer.Render(bundle);

            html.ShouldEqual("<script src=\"http://test.com/\" type=\"text/javascript\"></script>");
        }
Exemple #3
0
        public void WhenRenderExternalScriptBundleWithFallbackAsset_ThenHtmlEscapesFallbackScriptTags()
        {
            var fallbackRenderer = new Mock <IBundleHtmlRenderer <ScriptBundle> >();
            var renderer         = new ExternalScriptBundleHtmlRenderer(fallbackRenderer.Object, settings);
            var bundle           = new ExternalScriptBundle("http://test.com/", "test", "CONDITION");
            var asset            = new Mock <IAsset>();

            bundle.Assets.Add(asset.Object);

            fallbackRenderer.Setup(r => r.Render(bundle))
            .Returns(("<script></script>"));

            var html = renderer.Render(bundle);

            html.ShouldContain("%3Cscript%3E%3C/script%3E");
        }
Exemple #4
0
        public void WhenRenderExternalScriptBundleWithLocalAssetsAndIsDebugMode_ThenFallbackRendererUsed()
        {
            var bundle = new ExternalScriptBundle("http://test.com/", "test");

            bundle.Assets.Add(Mock.Of <IAsset>());
            var fallbackRenderer = new Mock <IBundleHtmlRenderer <ScriptBundle> >();

            fallbackRenderer.Setup(r => r.Render(bundle))
            .Returns(("FALLBACK"));
            settings.IsDebuggingEnabled = true;

            var renderer = new ExternalScriptBundleHtmlRenderer(fallbackRenderer.Object, settings);
            var html     = renderer.Render(bundle);

            html.ShouldEqual("FALLBACK");
        }
Exemple #5
0
        public void GivenExternalScriptBundleWithFallbackAssetsAndDebugMode_WhenRender_ThenOnlyOutputFallbackScripts()
        {
            settings.IsDebuggingEnabled = true;

            var bundle = new ExternalScriptBundle("http://test.com/", "test", "CONDITION");
            var asset  = new Mock <IAsset>();

            bundle.Assets.Add(asset.Object);

            var fallbackRenderer = new Mock <IBundleHtmlRenderer <ScriptBundle> >();

            fallbackRenderer.Setup(r => r.Render(bundle))
            .Returns(("<script></script>"));

            var renderer = new ExternalScriptBundleHtmlRenderer(fallbackRenderer.Object, settings);
            var html     = renderer.Render(bundle);

            html.ShouldEqual("<script></script>");
        }
Exemple #6
0
        public void WhenRenderExternalScriptBundleWithFallbackAsset_ThenHtmlContainsFallbackScript()
        {
            var bundle = new ExternalScriptBundle("http://test.com/", "test", "CONDITION");
            var asset  = new Mock <IAsset>();

            bundle.Assets.Add(asset.Object);

            var fallbackRenderer = new Mock <IBundleHtmlRenderer <ScriptBundle> >();

            fallbackRenderer.Setup(r => r.Render(bundle))
            .Returns(("FALLBACK"));

            var renderer = new ExternalScriptBundleHtmlRenderer(fallbackRenderer.Object, settings);
            var html     = renderer.Render(bundle);

            html.ShouldEqual(
                "<script src=\"http://test.com/\" type=\"text/javascript\"></script>" + Environment.NewLine +
                "<script type=\"text/javascript\">" + Environment.NewLine +
                "if(CONDITION){" + Environment.NewLine +
                "document.write(unescape('FALLBACK'));" + Environment.NewLine +
                "}" + Environment.NewLine +
                "</script>"
                );
        }