summaryrefslogtreecommitdiffstats
path: root/t
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-10-04 18:21:30 -0500
committerJesse Luehrs <doy@tozt.net>2012-10-04 18:21:30 -0500
commit17d50c83f2a4be7405fa151fb66620c132b01f0f (patch)
treeb11f8bc9aa769a073ad7d6d830a808b6b3430497 /t
parent6a0925c2c2028654fe8facb9f4388352b8d380d6 (diff)
downloadtext-handlebars-17d50c83f2a4be7405fa151fb66620c132b01f0f.tar.gz
text-handlebars-17d50c83f2a4be7405fa151fb66620c132b01f0f.zip
implement the built-in block helpers
Diffstat (limited to 't')
-rw-r--r--t/block-helper-builtins.t178
1 files changed, 178 insertions, 0 deletions
diff --git a/t/block-helper-builtins.t b/t/block-helper-builtins.t
new file mode 100644
index 0000000..338e067
--- /dev/null
+++ b/t/block-helper-builtins.t
@@ -0,0 +1,178 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use lib 't/lib';
+use Test::More;
+use Test::Handlebars;
+
+render_ok(
+ <<'TEMPLATE',
+<div class="entry">
+ <h1>{{title}}</h1>
+
+ {{#with author}}
+ <h2>By {{firstName}} {{lastName}}</h2>
+ {{/with}}
+</div>
+TEMPLATE
+ {
+ title => 'My first post!',
+ author => {
+ firstName => 'Charles',
+ lastName => 'Jolley',
+ },
+ },
+ <<'RENDERED',
+<div class="entry">
+ <h1>My first post!</h1>
+
+ <h2>By Charles Jolley</h2>
+</div>
+RENDERED
+ "with helper"
+);
+
+{ local $TODO = "unimplemented"; local $SIG{__WARN__} = sub { };
+render_ok(
+ <<'TEMPLATE',
+<ul class="people_list">
+ {{#each people}}
+ <li>{{this}}</li>
+ {{/each}}
+</ul>
+TEMPLATE
+ {
+ people => [
+ "Yehuda Katz",
+ "Alan Johnson",
+ "Charles Jolley",
+ ],
+ },
+ <<'RENDERED',
+<ul class="people_list">
+ <li>Yehuda Katz</li>
+ <li>Alan Johnson</li>
+ <li>Charles Jolley</li>
+</ul>
+RENDERED
+ "each helper"
+);
+}
+
+render_ok(
+ <<'TEMPLATE',
+<div class="entry">
+ {{#if author}}
+ <h1>{{firstName}} {{lastName}}</h1>
+ {{/if}}
+</div>
+TEMPLATE
+ {},
+ <<'RENDERED',
+<div class="entry">
+</div>
+RENDERED
+ "if helper (false)"
+);
+
+render_ok(
+ <<'TEMPLATE',
+<div class="entry">
+ {{#if author}}
+ <h1>{{firstName}} {{lastName}}</h1>
+ {{/if}}
+</div>
+TEMPLATE
+ {
+ author => 1,
+ firstName => "Yehuda",
+ lastName => "Katz",
+ },
+ <<'RENDERED',
+<div class="entry">
+ <h1>Yehuda Katz</h1>
+</div>
+RENDERED
+ "if helper (true)"
+);
+
+{ local $TODO = "unimplemented";
+render_ok(
+ <<'TEMPLATE',
+<div class="entry">
+ {{#if author}}
+ <h1>{{firstName}} {{lastName}}</h1>
+ {{else}}
+ <h1>Unknown Author</h1>
+ {{/if}}
+</div>
+TEMPLATE
+ {},
+ <<'RENDERED',
+<div class="entry">
+ <h1>Unknown Author</h1>
+</div>
+RENDERED
+ "if/else helper (false)"
+);
+
+render_ok(
+ <<'TEMPLATE',
+<div class="entry">
+ {{#if author}}
+ <h1>{{firstName}} {{lastName}}</h1>
+ {{else}}
+ <h1>Unknown Author</h1>
+ {{/if}}
+</div>
+TEMPLATE
+ {
+ author => 1,
+ firstName => "Yehuda",
+ lastName => "Katz",
+ },
+ <<'RENDERED',
+<div class="entry">
+ <h1>Yehuda Katz</h1>
+</div>
+RENDERED
+ "if/else helper (true)"
+);
+}
+
+render_ok(
+ <<'TEMPLATE',
+<div class="entry">
+ {{#unless license}}
+ <h3 class="warning">WARNING: This entry does not have a license!</h3>
+ {{/unless}}
+</div>
+TEMPLATE
+ {},
+ <<'RENDERED',
+<div class="entry">
+ <h3 class="warning">WARNING: This entry does not have a license!</h3>
+</div>
+RENDERED
+ "unless helper (false)"
+);
+
+render_ok(
+ <<'TEMPLATE',
+<div class="entry">
+ {{#unless license}}
+ <h3 class="warning">WARNING: This entry does not have a license!</h3>
+ {{/unless}}
+</div>
+TEMPLATE
+ {
+ license => 1,
+ },
+ <<'RENDERED',
+<div class="entry">
+</div>
+RENDERED
+ "unless helper (true)"
+);
+
+done_testing;