#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Test::Fatal;
use Text::Handlebars;
render_ok(
<<'TEMPLATE',
* {{name}}
* {{age}}
* {{company}}
* {{& company}}
TEMPLATE
{
name => 'Chris',
company => 'GitHub',
},
<<'RENDERED',
* Chris
*
* <b>GitHub</b>
* GitHub
RENDERED
"& for make_raw"
);
sub render_ok {
local $Test::Builder::Level = $Test::Builder::Level + 1;
return _render_ok('render_string', @_);
}
sub render_file_ok {
local $Test::Builder::Level = $Test::Builder::Level + 1;
return _render_ok('render', @_);
}
sub _render_ok {
my $render_method = shift;
my $opts = ref($_[0]) && ref($_[0]) eq 'HASH' ? shift : {};
my ($template, $env, $expected, $desc) = @_;
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $tx = Text::Handlebars->new(%$opts);
my $exception = exception {
is($tx->$render_method($template, $env), $expected, $desc);
};
fail("$desc (threw an exception)") if $exception;
is(
$exception,
undef,
"no exceptions for $desc"
);
}
done_testing;