/t/render_html_attributes.t

http://github.com/gshank/html-formhandler · Raku · 76 lines · 60 code · 16 blank · 0 comment · 2 complexity · 27389736c096b6bc98c92c3fd25939d3 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. use_ok('HTML::FormHandler::Render::Table');
  12. my $dir = File::ShareDir::dist_dir('HTML-FormHandler') . '/templates/';
  13. ok( $dir, 'found template dir' );
  14. {
  15. package Test::Form;
  16. use HTML::FormHandler::Moose;
  17. extends 'HTML::FormHandler';
  18. sub build_tt_template {'form.tt'}
  19. sub build_tt_include_path { ['share/templates'] }
  20. has_field 'foo' => ( css_class => 'schoen', style => 'bunt', title => 'MyTitle' );
  21. has_field 'bar' => ( html_attr => { arbitrary => 'something', title => 'AltTitle' } );
  22. }
  23. my %results;
  24. {
  25. my $form
  26. = Test::Form->new( css_class => 'beautifully', style => 'colorful' );
  27. $results{Widgets} = $form->render;
  28. }
  29. {
  30. my $form
  31. = Test::Form->new( css_class => 'beautifully', style => 'colorful' );
  32. HTML::FormHandler::Render::WithTT->meta->apply($form);
  33. $results{TT} = $form->render;
  34. }
  35. {
  36. my $form
  37. = Test::Form->new( css_class => 'beautifully', style => 'colorful' );
  38. HTML::FormHandler::Render::Simple->meta->apply($form);
  39. $results{Simple} = $form->render;
  40. }
  41. {
  42. my $form
  43. = Test::Form->new( css_class => 'beautifully', style => 'colorful' );
  44. HTML::FormHandler::Render::Table->meta->apply($form);
  45. $results{Table} = $form->render;
  46. }
  47. is( scalar( grep {$_} values %results ),
  48. scalar keys %results,
  49. 'Both methods rendered'
  50. );
  51. while ( my ( $key, $res ) = each %results ) {
  52. like( $res, qr/class="schoen"/, "$key Field got the class" );
  53. like( $res, qr/style="bunt"/, "$key Field got the style" );
  54. like( $res, qr/class="beautifully"/, "$key Form got the class" );
  55. like( $res, qr/style="colorful"/, "$key Form got the style" );
  56. like( $res, qr/arbitrary="something"/, "$key Field got the arbitrary attribute" );
  57. like( $res, qr/title="MyTitle"/, "$key Field got the title" );
  58. like( $res, qr/title="AltTitle"/, "$key Field got the title from html_attr" );
  59. }
  60. done_testing();