/t/render_filter.t

http://github.com/gshank/html-formhandler · Raku · 58 lines · 46 code · 12 blank · 0 comment · 0 complexity · 8655ffe6bd33f50ab06b3afdeca54053 MD5 · raw file

  1. use strict;
  2. use warnings;
  3. use Test::More;
  4. use HTML::FormHandler::Field::Text;
  5. my $field = HTML::FormHandler::Field::Text->new( name => 'test' );
  6. my $string = '"J.Doe" <jdoe@gmail.com>';
  7. my $output = $field->html_filter($string);
  8. is( $output, '&quot;J.Doe&quot; &lt;jdoe@gmail.com&gt;', 'output ok' );
  9. {
  10. package Test::RenderFilter;
  11. use HTML::FormHandler::Moose;
  12. extends 'HTML::FormHandler';
  13. has_field 'foo';
  14. has_field 'bar';
  15. sub render_filter {
  16. my $string = shift;
  17. $string =~ s/my/MY/g;
  18. return $string;
  19. }
  20. }
  21. my $form = Test::RenderFilter->new;
  22. ok( $form, 'form builds' );
  23. $form->process( params => { foo => 'This is my test' } );
  24. like( $form->field('foo')->render, qr/MY/, 'rendering was filters' );
  25. {
  26. package Test::FieldFilter;
  27. use HTML::FormHandler::Moose;
  28. extends 'HTML::FormHandler';
  29. has_field 'foo' => ( render_filter => \&foo_render );
  30. has_field 'bar' => ( render_filter => sub { shift } );
  31. sub foo_render {
  32. my $string = shift;
  33. $string =~ s/yours/YOURS/g;
  34. return $string;
  35. }
  36. }
  37. $form = Test::FieldFilter->new;
  38. $form->process( params => { foo => "What's mine is yours", bar => '<what a hoot>' } );
  39. is( $form->field('bar')->render, '
  40. <div><label class="label" for="bar">Bar: </label><input type="text" name="bar" id="bar" value="<what a hoot>" /></div>
  41. ', 'renders ok' );
  42. is( $form->field('foo')->render, '
  43. <div><label class="label" for="foo">Foo: </label><input type="text" name="foo" id="foo" value="What\'s mine is YOURS" /></div>
  44. ', 'renders ok' );
  45. done_testing;