Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Use default bundle processors from settings.
  • Loading branch information
andrewdavey committed Mar 15, 2012
1 parent fbd3024 commit 2c72088
Show file tree
Hide file tree
Showing 18 changed files with 149 additions and 82 deletions.
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Cassette.BundleProcessing;
using Cassette.IO;
using Cassette.Scripts;
using Moq;
Expand Down Expand Up @@ -65,11 +66,11 @@ public void WhenCreateWithBundleHavingExternalReference_ThenAnExternalBundleIsAl
public void WhenExternalModuleReferencedTwice_ThenContainerOnlyHasTheExternalModuleOnce()
{
var urlModifier = Mock.Of<IUrlModifier>();
var externalBundle = new ExternalScriptBundle("http://external.com/api.js");
var bundle1 = new ScriptBundle("~/test1");
var externalBundle = new ExternalScriptBundle("http://external.com/api.js") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
var bundle1 = new ScriptBundle("~/test1") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
bundle1.Renderer = new ConstantHtmlRenderer<ScriptBundle>("", urlModifier);
bundle1.AddReference("http://external.com/api.js");
var bundle2 = new ScriptBundle("~/test2");
var bundle2 = new ScriptBundle("~/test2") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
bundle2.Renderer = new ConstantHtmlRenderer<ScriptBundle>("", urlModifier);
bundle2.AddReference("http://external.com/api.js");
var bundles = new[] { bundle1, bundle2 };
Expand Down
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Linq;
using Cassette.Configuration;
using Moq;
using Should;
using Xunit;
Expand All @@ -9,8 +10,15 @@ namespace Cassette.HtmlTemplates
{
public class HtmlTemplateBundleFactory_Tests
{
readonly HtmlTemplateBundleFactory factory = new HtmlTemplateBundleFactory();
readonly HtmlTemplateBundleFactory factory;
readonly List<IFile> allFiles = new List<IFile>();
readonly CassetteSettings settings;

public HtmlTemplateBundleFactory_Tests()
{
settings = new CassetteSettings("");
factory = new HtmlTemplateBundleFactory(settings);
}

void FilesExist(params string[] paths)
{
Expand Down Expand Up @@ -185,5 +193,14 @@ public void GivenSubDirAsteriskAndTopLevelAsterisk_WhenCreateBundle_ThenSubDirFi
.SequenceEqual(new[] { "~/shared/a.htm", "~/shared/b.htm", "~/c.htm" })
.ShouldBeTrue();
}

[Fact]
public void CreateBundleAssignsSettingsDefaultProcessor()
{
var processor = new HtmlTemplatePipeline();
settings.SetDefaultBundleProcessor(processor);
var bundle = factory.CreateBundle("~", Enumerable.Empty<IFile>(), new BundleDescriptor { AssetFilenames = { "*" } });
bundle.Processor.ShouldBeSameAs(processor);
}
}
}
16 changes: 11 additions & 5 deletions src/Cassette.UnitTests/ReferenceBuilder.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Cassette.BundleProcessing;
using Cassette.Configuration;
using Cassette.IO;
using Cassette.Scripts;
Expand Down Expand Up @@ -132,7 +133,7 @@ public void WhenAddReferenceToUnknownUrl_ThenGetBundlesReturnsAnExternalBundle()
{
var bundleFactory = new Mock<IBundleFactory<ScriptBundle>>();
bundleFactory.Setup(f => f.CreateBundle("http://test.com/test.js", It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
.Returns(new ExternalScriptBundle("http://test.com/test.js"));
.Returns(new ExternalScriptBundle("http://test.com/test.js") { Processor = StubProcessor<ScriptBundle>() });
bundleFactories[typeof(ScriptBundle)] = bundleFactory.Object;

builder.Reference("http://test.com/test.js");
Expand Down Expand Up @@ -160,7 +161,7 @@ public void WhenAddReferenceToUnknownHttpsUrl_ThenGetBundlesReturnsAnExternalBun
{
var bundleFactory = new Mock<IBundleFactory<ScriptBundle>>();
bundleFactory.Setup(f => f.CreateBundle("https://test.com/test.js", It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
.Returns(new ExternalScriptBundle("https://test.com/test.js"));
.Returns(new ExternalScriptBundle("https://test.com/test.js") { Processor = StubProcessor<ScriptBundle>() });
bundleFactories[typeof(ScriptBundle)] = bundleFactory.Object;
builder.Reference("https://test.com/test.js");

Expand All @@ -173,7 +174,7 @@ public void WhenAddReferenceToUnknownProtocolRelativeUrl_ThenGetBundlesReturnsAn
{
var bundleFactory = new Mock<IBundleFactory<ScriptBundle>>();
bundleFactory.Setup(f => f.CreateBundle("//test.com/test.js", It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
.Returns(new ExternalScriptBundle("//test.com/test.js"));
.Returns(new ExternalScriptBundle("//test.com/test.js") { Processor = StubProcessor<ScriptBundle>() });
bundleFactories[typeof(ScriptBundle)] = bundleFactory.Object;

builder.Reference("//test.com/test.js");
Expand All @@ -187,7 +188,7 @@ public void WhenAddReferenceToUnknownCssUrl_ThenExternalStylesheetBundleIsCreate
{
var bundleFactory = new Mock<IBundleFactory<StylesheetBundle>>();
bundleFactory.Setup(f => f.CreateBundle("http://test.com/test.css", It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
.Returns(new ExternalStylesheetBundle("http://test.com/test.css"));
.Returns(new ExternalStylesheetBundle("http://test.com/test.css") { Processor = StubProcessor<StylesheetBundle>() });
bundleFactories[typeof(StylesheetBundle)] = bundleFactory.Object;

builder.Reference("http://test.com/test.css");
Expand All @@ -209,7 +210,7 @@ public void WhenAddReferenceToUnknownUrlWithBundleTypeAndUnexpectedExtension_The
{
var bundleFactory = new Mock<IBundleFactory<StylesheetBundle>>();
bundleFactory.Setup(f => f.CreateBundle("http://test.com/test", It.IsAny<IEnumerable<IFile>>(), It.IsAny<BundleDescriptor>()))
.Returns(new ExternalStylesheetBundle("http://test.com/test"));
.Returns(new ExternalStylesheetBundle("http://test.com/test") { Processor = StubProcessor<StylesheetBundle>() });
bundleFactories[typeof(StylesheetBundle)] = bundleFactory.Object;

builder.Reference<StylesheetBundle>("http://test.com/test");
Expand Down Expand Up @@ -375,6 +376,11 @@ public void GivenBundlesWithOnePageLocationAssigned_WhenReferenceCallOmitsPageLo
builder.GetBundles("head").Single().ShouldBeSameAs(jquery);
builder.GetBundles(null).Single().ShouldBeSameAs(app);
}

IBundleProcessor<T> StubProcessor<T>() where T : Bundle
{
return Mock.Of<IBundleProcessor<T>>();
}
}

public class ReferenceBuilder_Render_Tests
Expand Down
19 changes: 10 additions & 9 deletions src/Cassette.UnitTests/Scripts/ExternalScriptBundle.Render.cs
@@ -1,4 +1,5 @@
using System;
using Cassette.BundleProcessing;
using Cassette.Configuration;
using Moq;
using Should;
Expand All @@ -24,15 +25,15 @@ public ExternalScriptBundleRender_Tests()
[Fact]
public void WhenRenderExternalScriptBundle_ThenHtmlIsScriptElement()
{
var bundle = new ExternalScriptBundle("http://test.com/");
var bundle = new ExternalScriptBundle("http://test.com/") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
var html = Render(bundle);
html.ShouldEqual("<script src=\"http://test.com/\" type=\"text/javascript\"></script>");
}

[Fact]
public void WhenRenderExternalScriptBundleWithCondition_ThenHtmlIsScriptElementWithConditional()
{
var bundle = new ExternalScriptBundle("http://test.com/") {Condition = "CONDITION"};
var bundle = new ExternalScriptBundle("http://test.com/") { Condition = "CONDITION", Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
var html = Render(bundle);

html.ShouldEqual(
Expand All @@ -44,7 +45,7 @@ public void WhenRenderExternalScriptBundleWithCondition_ThenHtmlIsScriptElementW
[Fact]
public void WhenRenderExternalScriptBundleWithNotIECondition_ThenHtmlIsScriptElementWithConditionalButLeavesScriptVisibleToAllBrowsers()
{
var bundle = new ExternalScriptBundle("http://test.com/") { Condition = "(gt IE 9)|!(IE)" };
var bundle = new ExternalScriptBundle("http://test.com/") { Condition = "(gt IE 9)|!(IE)", Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
var fallbackRenderer = new Mock<IBundleHtmlRenderer<ScriptBundle>>();

var html = bundle.Render(bundle);
Expand All @@ -58,7 +59,7 @@ public void WhenRenderExternalScriptBundleWithNotIECondition_ThenHtmlIsScriptEle
[Fact]
public void WhenRenderExternalScriptBundleWithHtmlAttributes_ThenHtmlIsScriptElementWithExtraAttributes()
{
var bundle = new ExternalScriptBundle("http://test.com/");
var bundle = new ExternalScriptBundle("http://test.com/") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
bundle.HtmlAttributes["class"] = "foo";

var html = Render(bundle);
Expand All @@ -69,7 +70,7 @@ public void WhenRenderExternalScriptBundleWithHtmlAttributes_ThenHtmlIsScriptEle
[Fact]
public void WhenRenderExternalScriptBundleWithLocalAssetsAndIsDebugMode_ThenFallbackRendererUsed()
{
var bundle = new ExternalScriptBundle("http://test.com/", "test");
var bundle = new ExternalScriptBundle("http://test.com/", "test") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
bundle.Assets.Add(new StubAsset());
fallbackRenderer.Setup(r => r.Render(bundle))
.Returns("FALLBACK");
Expand All @@ -83,7 +84,7 @@ public void WhenRenderExternalScriptBundleWithLocalAssetsAndIsDebugMode_ThenFall
[Fact]
public void WhenRenderExternalScriptBundleWithFallbackAsset_ThenHtmlContainsFallbackScript()
{
var bundle = new ExternalScriptBundle("http://test.com/", "test", "CONDITION");
var bundle = new ExternalScriptBundle("http://test.com/", "test", "CONDITION") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
bundle.Assets.Add(new StubAsset());

fallbackRenderer.Setup(r => r.Render(bundle))
Expand All @@ -104,7 +105,7 @@ public void WhenRenderExternalScriptBundleWithFallbackAsset_ThenHtmlContainsFall
[Fact]
public void WhenRenderExternalScriptBundleWithFallbackAsset_ThenHtmlEscapesFallbackScriptTags()
{
var bundle = new ExternalScriptBundle("http://test.com/", "test", "CONDITION");
var bundle = new ExternalScriptBundle("http://test.com/", "test", "CONDITION") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
bundle.Assets.Add(new StubAsset());

fallbackRenderer.Setup(r => r.Render(bundle))
Expand All @@ -120,7 +121,7 @@ public void GivenExternalScriptBundleWithFallbackAssetsAndDebugMode_WhenRender_T
{
settings.IsDebuggingEnabled = true;

var bundle = new ExternalScriptBundle("http://test.com/", "test", "CONDITION");
var bundle = new ExternalScriptBundle("http://test.com/", "test", "CONDITION") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
bundle.Assets.Add(new StubAsset());

fallbackRenderer.Setup(r => r.Render(bundle))
Expand All @@ -134,7 +135,7 @@ public void GivenExternalScriptBundleWithFallbackAssetsAndDebugMode_WhenRender_T
[Fact]
public void WhenRenderExternalScriptBundleWithNoLocalAssetsAndIsDebugMode_ThenNormalScriptElementIsReturned()
{
var bundle = new ExternalScriptBundle("http://test.com/", "test");
var bundle = new ExternalScriptBundle("http://test.com/", "test") { Processor = Mock.Of<IBundleProcessor<ScriptBundle>>() };
settings.IsDebuggingEnabled = true;

var html = Render(bundle);
Expand Down
2 changes: 1 addition & 1 deletion src/Cassette.UnitTests/Scripts/ExternalScriptBundle.cs
Expand Up @@ -101,7 +101,7 @@ public void UrlRequired()
[Fact]
public void GivenBundleIsProcessed_WhenRender_ThenExternalRendererUsed()
{
var bundle = new ExternalScriptBundle(Url, "~/test", "condition");
var bundle = new ExternalScriptBundle(Url, "~/test", "condition") { Processor = new ScriptPipeline() };
var asset = new Mock<IAsset>();
asset.SetupGet(a => a.SourceFile.FullPath).Returns("~/test/asset.js");
asset.Setup(a => a.OpenStream()).Returns(Stream.Null);
Expand Down
Expand Up @@ -22,7 +22,8 @@ public ScriptBundleManifestBuilder_Tests()
bundle = new ScriptBundle("~/path")
{
PageLocation = "body",
Hash = new byte[] { 1, 2, 3 }
Hash = new byte[] { 1, 2, 3 },
Processor = new ScriptPipeline()
};
asset = new StubAsset
{
Expand Down
26 changes: 22 additions & 4 deletions src/Cassette.UnitTests/Scripts/ScriptBundleFactory.cs
Expand Up @@ -2,15 +2,23 @@
using Cassette.IO;
using Should;
using Xunit;
using Cassette.Configuration;

namespace Cassette.Scripts
{
public class ScriptBundleFactory_Tests
{
readonly CassetteSettings settings;

public ScriptBundleFactory_Tests()
{
settings = new CassetteSettings("");
}

[Fact]
public void CreateBundleReturnsScriptBundle()
{
var factory = new ScriptBundleFactory();
var factory = new ScriptBundleFactory(settings);
var bundle = factory.CreateBundle(
"~/test",
Enumerable.Empty<IFile>(),
Expand All @@ -22,7 +30,7 @@ public void CreateBundleReturnsScriptBundle()
[Fact]
public void CreateBundleAssignsScriptBundleDirectory()
{
var factory = new ScriptBundleFactory();
var factory = new ScriptBundleFactory(settings);
var bundle = factory.CreateBundle(
"~/test",
Enumerable.Empty<IFile>(),
Expand All @@ -34,13 +42,13 @@ public void CreateBundleAssignsScriptBundleDirectory()
[Fact]
public void CreateBundleWithUrlCreatesExternalScriptBundle()
{
new ScriptBundleFactory().CreateExternalBundle("http://test.com/api.js").ShouldBeType<ExternalScriptBundle>();
new ScriptBundleFactory(settings).CreateExternalBundle("http://test.com/api.js").ShouldBeType<ExternalScriptBundle>();
}

[Fact]
public void GivenDescriptorIsFromFile_WhenCreateBundle_ThenBundleIsFromDescriptorFileEqualsTrue()
{
var factory = new ScriptBundleFactory();
var factory = new ScriptBundleFactory(settings);
var descriptor = new BundleDescriptor
{
IsFromFile = true,
Expand All @@ -53,5 +61,15 @@ public void GivenDescriptorIsFromFile_WhenCreateBundle_ThenBundleIsFromDescripto
);
bundle.IsFromDescriptorFile.ShouldBeTrue();
}

[Fact]
public void CreateBundleAssignsSettingsDefaultProcessor()
{
var processor = new ScriptPipeline();
settings.SetDefaultBundleProcessor(processor);
var factory = new ScriptBundleFactory(settings);
var bundle = factory.CreateBundle("~", Enumerable.Empty<IFile>(), new BundleDescriptor { AssetFilenames = { "*" } });
bundle.Processor.ShouldBeSameAs(processor);
}
}
}
Expand Up @@ -15,8 +15,11 @@ public class ExternalStylesheetBundleRender_Tests
public ExternalStylesheetBundleRender_Tests()
{
settings = new CassetteSettings("");
fallbackRenderer = new Mock<IBundleHtmlRenderer<StylesheetBundle>>();
bundle = new ExternalStylesheetBundle("http://test.com/");
fallbackRenderer = new Mock<IBundleHtmlRenderer<StylesheetBundle>>();
bundle = new ExternalStylesheetBundle("http://test.com/")
{
Processor = new StylesheetPipeline()
};
}

string Render()
Expand Down
7 changes: 0 additions & 7 deletions src/Cassette.UnitTests/Stylesheets/StylesheetBundle.cs
@@ -1,7 +1,6 @@
using Cassette.BundleProcessing;
using Cassette.Configuration;
using Moq;
using Should;
using Xunit;

namespace Cassette.Stylesheets
Expand All @@ -25,12 +24,6 @@ public void RenderCallsRenderer()

public class StylesheetBundle_Process_Tests
{
[Fact]
public void ProcessorDefaultsToStylesheetPipeline()
{
new StylesheetBundle("~").Processor.ShouldBeType<StylesheetPipeline>();
}

[Fact]
public void ProcessCallsProcessor()
{
Expand Down
14 changes: 13 additions & 1 deletion src/Cassette.UnitTests/Stylesheets/StylesheetBundleFactory.cs
@@ -1,4 +1,5 @@
using System.Linq;
using Cassette.Configuration;
using Cassette.IO;
using Should;
using Xunit;
Expand All @@ -8,10 +9,12 @@ namespace Cassette.Stylesheets
public class StylesheetBundleFactory_Tests
{
readonly StylesheetBundleFactory factory;
readonly CassetteSettings settings;

public StylesheetBundleFactory_Tests()
{
factory = new StylesheetBundleFactory();
settings = new CassetteSettings("");
factory = new StylesheetBundleFactory(settings);
}

[Fact]
Expand All @@ -31,5 +34,14 @@ public void CreateBundleWithUrlCreatesExternalBundle()
var bundle = factory.CreateExternalBundle("http://test.com/test.css");
bundle.ShouldBeType<ExternalStylesheetBundle>();
}

[Fact]
public void CreateBundleAssignsSettingsDefaultProcessor()
{
var processor = new StylesheetPipeline();
settings.SetDefaultBundleProcessor(processor);
var bundle = factory.CreateBundle("~", Enumerable.Empty<IFile>(), new BundleDescriptor { AssetFilenames = { "*" } });
bundle.Processor.ShouldBeSameAs(processor);
}
}
}

0 comments on commit 2c72088

Please sign in to comment.