public void Can_get_data_from_all_assets_with_debugging_enabled() { // Arrange var builder = new AssetBuilder(); var a1 = builder.Path("f/1.js").Data("abc123").Build(); var a2 = builder.Path("f/2.js").Data("def456").Build(); var a3 = builder.Path("f/3.js").Data("ghi789").Build(); var p = this.CreatePackage(new[] { a1, a2, a3 }, isDebugging: true); // Act var d = p.GetAllData(); // Assert Assert.AreEqual("$abc123-f/1.js$\r\n$def456-f/2.js$\r\n$ghi789-f/3.js$\r\n", d); }
public void Should_add_templates_to_keyed_by_stripping_the_file_extension() { // Arrange var builder = new AssetBuilder(); var a1 = builder.Path("tmpl/A.jst").Data("<h1 />").Build(); var a2 = builder.Path("views/B.jst").Data("<h2 />").Build(); var config = new TemplateConfiguration("JST", "tmpl", "jst"); var tmpl = this.CreateTemplateAsset(config, a1, a2); // Act var data = tmpl.GetData(); // Assert Assert.IsTrue(data.Contains("ns[\"tmpl/A\"] = lazyTemplate('<h1 />');")); Assert.IsTrue(data.Contains("ns[\"views/B\"] = lazyTemplate('<h2 />');")); }
public void Can_use_custom_name_casing() { // Arrange var builder = new AssetBuilder(); var a1 = builder.Path("tMpL/A.jst").Data("<h1 />").Build(); var a2 = builder.Path("VIEWS/b.jst").Data("<h2 />").Build(); var config = new TemplateConfiguration("JST", "tmpl", "jst"); config.NameCasing = p => p.ToLower(); var tmpl = this.CreateTemplateAsset(config, a1, a2); // Act var data = tmpl.GetData(); // Assert Assert.IsTrue(data.Contains("ns[\"tmpl/a\"] = lazyTemplate('<h1 />');")); Assert.IsTrue(data.Contains("ns[\"views/b\"] = lazyTemplate('<h2 />');")); }
public void Should_escape_single_quotes_for_asset_data() { // Arrange var builder = new AssetBuilder(); var a1 = builder.Path("a.jst").Data("<a href='#' />").Build(); var a2 = builder.Path("b.jst").Data("<a href=\\'#\\' />").Build(); var a3 = builder.Path("c.jst").Data("<a href=\"#\" />").Build(); var config = new TemplateConfiguration("JST", "tmpl", "jst"); var tmpl = this.CreateTemplateAsset(config, a1, a2, a3); // Act var data = tmpl.GetData(); // Assert Assert.IsTrue(data.Contains("ns[\"a\"] = lazyTemplate('<a href=\\'#\\' />');")); Assert.IsTrue(data.Contains("ns[\"b\"] = lazyTemplate('<a href=\\\\'#\\\\' />');")); Assert.IsTrue(data.Contains("ns[\"c\"] = lazyTemplate('<a href=\"#\" />');")); }
public void Should_remove_common_prefixes() { // Arrange var builder = new AssetBuilder(); var a1 = builder.Path("tmpl/a.jst").Data("<h1 />").Build(); var a2 = builder.Path("tmpl/b.jst").Data("<h1 />").Build(); var a3 = builder.Path("tmpl/c.jst").Data("<h1 />").Build(); var a4 = builder.Path("tmpl/test/d.jst").Data("<h1 />").Build(); var config = new TemplateConfiguration("JST", "tmpl", "jst"); var tmpl = this.CreateTemplateAsset(config, a1, a2, a3, a4); // Act var data = tmpl.GetData(); // Assert Assert.IsTrue(data.Contains("ns[\"a\"] = lazyTemplate('<h1 />');")); Assert.IsTrue(data.Contains("ns[\"b\"] = lazyTemplate('<h1 />');")); Assert.IsTrue(data.Contains("ns[\"c\"] = lazyTemplate('<h1 />');")); Assert.IsTrue(data.Contains("ns[\"test/d\"] = lazyTemplate('<h1 />');")); }
public void Should_aggregate_template_assets() { // Arrange var builder = new AssetBuilder(); var a1 = builder.Path("content/scripts/1.js").Build(); var a2 = builder.Path("content/scripts/2.js").Build(); var a3 = builder.Path("content/tmpl/1.jst").Build(); var a4 = builder.Path("content/tmpl/2.jst").Build(); // Act var package = this.CreatePackage(new List<IAsset>() { a1, a2, a3, a4 }, "jst"); // Assert Assert.AreEqual(3, package.Assets.Count()); Assert.AreEqual("content/scripts/1.js", package.Assets.First().Path); Assert.AreEqual("content/scripts/2.js", package.Assets.Skip(1).First().Path); var tmplAsset = package.Assets.Skip(2).First(); Assert.IsTrue(tmplAsset.Path.StartsWith("templates/")); Assert.IsTrue(tmplAsset.Path.EndsWith(".js")); Assert.IsInstanceOfType(tmplAsset, typeof(TemplateAsset)); }
public void Can_get_data_from_individual_asset() { Action<bool> getAssetDataTest = (bool isDebugging) => { // Arrange var builder = new AssetBuilder(); var a1 = builder.Path("content/1.js").Data("abc123").Build(); var a2 = builder.Path("ContenT/2.js").Data("def456").Build(); var p = this.CreatePackage(new[] { a1, a2 }, isDebugging); // Act/Assert Assert.AreEqual("$abc123-content/1.js$", p.GetAssetData("content/1.js")); Assert.AreEqual("$def456-ContenT/2.js$", p.GetAssetData("cONTENt/2.js")); Assert.IsNull(p.GetAssetData("non-existant-path/3.js")); }; // Should return same results when debugging is enabled/disabled. // Only preprocessing should execute. getAssetDataTest(false); getAssetDataTest(true); }
public void Should_replace_line_breaks_with_new_line_characters() { // Arrange var builder = new AssetBuilder(); var a1 = builder.Path("a.jst").Data(@"<h1> </h1>").Build(); var a2 = builder.Path("b.jst").Data(@"<h1> </h1>").Build(); var config = new TemplateConfiguration("JST", "tmpl", "jst"); var tmpl = this.CreateTemplateAsset(config, a1, a2); // Act var data = tmpl.GetData(); // Assert Assert.IsTrue(data.Contains("ns[\"a\"] = lazyTemplate('<h1>\\n</h1>');")); // Preserve whitespace. Assert.IsTrue(data.Contains("ns[\"b\"] = lazyTemplate('<h1>\\n </h1>');")); }