From f8163f38482ebe4a48b08a3f49080821e62e383b Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 2 Oct 2012 15:11:59 -0500 Subject: refactor tests --- t/lib/Test/Handlebars.pm | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 t/lib/Test/Handlebars.pm (limited to 't/lib/Test/Handlebars.pm') 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; -- cgit v1.2.3-54-g00ecf