summaryrefslogtreecommitdiffstats
path: root/t/lib/Test/Handlebars.pm
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-10-02 15:11:59 -0500
committerJesse Luehrs <doy@tozt.net>2012-10-02 15:31:20 -0500
commitf8163f38482ebe4a48b08a3f49080821e62e383b (patch)
tree83398b2cd786e538487d13e4d50a547d91b0bbbf /t/lib/Test/Handlebars.pm
parent5dc5000f75492b6f78d27fab3c56055d4534b5a7 (diff)
downloadtext-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.pm57
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;