use Test::Mini::Unit;
use Template::Mustache;
case t::LambdasReceiveRenderHelper {
{
package t::LambdasReceiveRenderHelper::Mustache;
use base 'Template::Mustache';
sub name { sub { pop->('{{user}}') } }
sub obfuscated { sub { pop->('{{'.reverse(shift).'}}') } }
sub user { '({{logged_in_as}})' }
sub logged_in_as { 'Sam' }
}
case Interpolation {
setup {
$self->{tmpl} = 'I am {{name}}';
}
test from_hash {
my $data = {
name => sub { pop->('{{user}}') },
user => '({{logged_in_as}})',
logged_in_as => 'Sam',
};
my $rendered = Template::Mustache->render($self->{tmpl}, $data);
assert_equal($rendered, 'I am (Sam)');
}
test from_class {
my $data = 't::LambdasReceiveRenderHelper::Mustache';
my $rendered = Template::Mustache->render($self->{tmpl}, $data);
assert_equal($rendered, 'I am (Sam)');
}
test from_instance {
my $data = t::LambdasReceiveRenderHelper::Mustache->new();
my $rendered = Template::Mustache->render($self->{tmpl}, $data);
assert_equal($rendered, 'I am (Sam)');
}
}
case SectionTags {
setup {
$self->{tmpl} = 'I am {{#obfuscated}}resu{{/obfuscated}}';
}
test from_hash {
my $data = {
obfuscated => sub { pop->('{{'.reverse(shift).'}}') },
user => '({{logged_in_as}})',
logged_in_as => 'Sam',
};
my $rendered = Template::Mustache->render($self->{tmpl}, $data);
assert_equal($rendered, 'I am (Sam)');
}
test from_class {
my $data = 't::LambdasReceiveRenderHelper::Mustache';
my $rendered = Template::Mustache->render($self->{tmpl}, $data);
assert_equal($rendered, 'I am (Sam)');
}
test from_instance {
my $data = t::LambdasReceiveRenderHelper::Mustache->new();
my $rendered = Template::Mustache->render($self->{tmpl}, $data);
assert_equal($rendered, 'I am (Sam)');
}
}
}