public void ModulePathIsRequired() { var asset = new StubAsset("~/test.js"); var bundle = new ScriptBundle("~"); Assert.Throws<ArgumentNullException>( () => new NamedModule(asset, bundle, null) ); }
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 ModulePathIsBuiltFromAssetPath() { var asset = new StubAsset("~/test.js"); var bundle = new ScriptBundle("~"); var module = new AnonymousModule(asset, bundle); module.ModulePath.ShouldEqual("test"); }
public void ModulePathIsRequired() { var asset = new StubAsset("~/test.js"); var bundle = new ScriptBundle("~"); Assert.Throws <ArgumentNullException>( () => new NamedModule(asset, bundle, null) ); }
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 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 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()); }
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 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 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(){})"); }
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; }
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"); }
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); }
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 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); }
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 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});"); }
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 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"); }
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 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. }
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"); }