summaryrefslogtreecommitdiffstats
path: root/t/mustache-extra.t
blob: ac28498d78e0fa72110f38f3f53123ae82a3d636 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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 => '<b>GitHub</b>',
    },
    <<'RENDERED',
* Chris
* 
* &lt;b&gt;GitHub&lt;/b&gt;
* <b>GitHub</b>
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;