diff options
author | Jesse Luehrs <doy@tozt.net> | 2012-10-02 15:11:59 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2012-10-02 15:31:20 -0500 |
commit | f8163f38482ebe4a48b08a3f49080821e62e383b (patch) | |
tree | 83398b2cd786e538487d13e4d50a547d91b0bbbf /t/lib/Test/Handlebars.pm | |
parent | 5dc5000f75492b6f78d27fab3c56055d4534b5a7 (diff) | |
download | text-handlebars-f8163f38482ebe4a48b08a3f49080821e62e383b.tar.gz text-handlebars-f8163f38482ebe4a48b08a3f49080821e62e383b.zip |
refactor tests
Diffstat (limited to 't/lib/Test/Handlebars.pm')
-rw-r--r-- | t/lib/Test/Handlebars.pm | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/t/lib/Test/Handlebars.pm b/t/lib/Test/Handlebars.pm new file mode 100644 index 0000000..25b22d9 --- /dev/null +++ b/t/lib/Test/Handlebars.pm @@ -0,0 +1,57 @@ +package Test::Handlebars; +use strict; +use warnings; + +use Test::Builder; +use Test::Fatal; +use Text::Handlebars; + +use Sub::Exporter -setup => { + exports => [ + qw(render_ok render_file_ok) + ], + groups => { + default => [ + qw(render_ok render_file_ok) + ], + }, +}; + +my $Test = Test::Builder->new; + +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 { + local $Test::Builder::Level = $Test::Builder::Level + 1; + my $render_method = shift; + my $opts = ref($_[0]) && ref($_[0]) eq 'HASH' ? shift : {}; + my ($template, $env, $expected, $desc) = @_; + + my $tx = Text::Handlebars->new(%$opts); + + my $exception = exception { + local $Test::Builder::Level = $Test::Builder::Level + 5; + $Test->is_eq($tx->$render_method($template, $env), $expected, $desc); + }; + $Test->ok(0, "$desc (threw an exception)") if $exception; + { + no strict 'refs'; + local ${ caller(1) . '::TODO' } = undef unless $exception; + use strict; + $Test->is_eq( + $exception, + undef, + "no exceptions for $desc" + ); + } +} + +1; |