/t/render_withtt.t

http://github.com/gshank/html-formhandler · Raku · 62 lines · 48 code · 12 blank · 2 comment · 4 complexity · 55aefee737abc8f176ff4f48a5ad59f7 MD5 · raw file

  1. use strict;
  2. use warnings;
  3. use Test::More;
  4. use File::ShareDir;
  5. BEGIN {
  6. plan skip_all => 'Install Template Toolkit to test Render::WithTT'
  7. unless eval { require Template };
  8. }
  9. use_ok('HTML::FormHandler::Render::WithTT');
  10. use_ok('HTML::FormHandler::Render::Simple');
  11. my $dir = File::ShareDir::dist_dir('HTML-FormHandler') . '/templates/';
  12. ok( $dir, 'found template dir' );
  13. {
  14. package Test::Form;
  15. use HTML::FormHandler::Moose;
  16. extends 'HTML::FormHandler';
  17. #with 'HTML::FormHandler::Render::WithTT';
  18. sub build_tt_template { 'form.tt' }
  19. sub build_tt_include_path { ['share/templates'] }
  20. has_field 'foo';
  21. has_field 'bar';
  22. has_field 'submit' => ( type => 'Submit' );
  23. }
  24. my $rendered_via_tt;
  25. {
  26. my $form = Test::Form->new(name => 'test_tt');
  27. HTML::FormHandler::Render::WithTT->meta->apply($form);
  28. ok( $form, 'form builds' );
  29. ok( $form->tt_include_path, 'tt include path' );
  30. $rendered_via_tt = $form->tt_render;
  31. ok($rendered_via_tt, 'form tt renders' );
  32. }
  33. SKIP: {
  34. skip 'Install HTML::TreeBuilder to test TT Result', 3
  35. unless eval { require HTML::TreeBuilder && $HTML::TreeBuilder::VERSION >= 3.23 };
  36. # really old TreeBuilder versions might not work
  37. my $rendered_via_widget;
  38. {
  39. my $form = Test::Form->new(name => 'test_tt');
  40. HTML::FormHandler::Render::Simple->meta->apply($form);
  41. ok( $form, 'form builds' );
  42. $rendered_via_widget = $form->render;
  43. ok($rendered_via_widget, 'form simple renders' );
  44. }
  45. my $widget = HTML::TreeBuilder->new_from_content($rendered_via_widget);
  46. my $tt = HTML::TreeBuilder->new_from_content($rendered_via_tt);
  47. is($widget->as_HTML, $tt->as_HTML,
  48. "TT Rendering and Widget Rendering matches");
  49. };
  50. done_testing;