/t/wizard.t

http://github.com/gshank/html-formhandler · Raku · 70 lines · 55 code · 15 blank · 0 comment · 0 complexity · 6ecd4ca973924c2cd6fdd93fc65dbee0 MD5 · raw file

  1. use strict;
  2. use warnings;
  3. use Test::More;
  4. use_ok( 'HTML::FormHandler::Wizard' );
  5. {
  6. package Test::Wizard;
  7. use HTML::FormHandler::Moose;
  8. extends 'HTML::FormHandler::Wizard';
  9. has_field 'foo';
  10. has_field 'bar';
  11. has_field 'zed';
  12. has_page 'one' => ( fields => ['foo'] );
  13. has_page 'two' => ( fields => ['bar'] );
  14. has_page 'three' => ( fields => ['zed'] );
  15. }
  16. my $wizard = Test::Wizard->new;
  17. ok( $wizard, 'wizard built ok' );
  18. is( $wizard->num_pages, 3, 'right number of pages' );
  19. ok( $wizard->page('one')->has_fields, 'first page has a field' );
  20. is( $wizard->page('one')->field('foo')->name, 'foo', 'field object from page' );
  21. {
  22. package Test::Wizard::List;
  23. use HTML::FormHandler::Moose;
  24. extends 'HTML::FormHandler::Wizard';
  25. has_field 'foo';
  26. has_field 'bar';
  27. has_field 'zed';
  28. sub page_list { [
  29. one => { fields => ['foo'] },
  30. two => { fields => ['bar'] },
  31. three => { fields => ['zed'] }
  32. ]}
  33. }
  34. my $stash = {};
  35. $wizard = Test::Wizard::List->new( stash => $stash );
  36. ok( $wizard, 'wizard built ok' );
  37. is( $wizard->num_pages, 3, 'right number of pages' );
  38. ok( $wizard->page('one')->has_fields, 'first page has a field' );
  39. is( $wizard->page('one')->field('foo')->name, 'foo', 'field object from page' );
  40. $wizard->process( params => {} );
  41. like( $wizard->render, qr/\<input type="hidden" name="page_num" id="page_num" value="1" \/\>/, 'renders ok' );
  42. is( $wizard->field('page_num')->value, 1, 'wizard is on first page' );
  43. $wizard->process( params => { foo => 'test123', page_num => 1 } );
  44. is( $wizard->field('page_num')->value, 2, 'wizard is on second page' );
  45. like( $wizard->render, qr/\<input type="hidden" name="page_num" id="page_num" value="2" \/\>/, 'renders ok' );
  46. is_deeply( $stash, { foo => 'test123', page_num => 1 }, 'values saved' );
  47. $wizard->process( params => { bar => 'xxxxx', page_num => 2 } );
  48. is( $wizard->field('page_num')->value, 3, 'wizard is on third page' );
  49. like( $wizard->render, qr/\<input type="hidden" name="page_num" id="page_num" value="3" \/\>/, 'renders ok' );
  50. is_deeply( $stash, { foo => 'test123', page_num => 2, bar => 'xxxxx' }, 'values saved' );
  51. $wizard->process( params => { zed => 'omega', page_num => 3 } );
  52. ok( $wizard->validated, 'wizard validated on last page' );
  53. is_deeply( $stash, { foo => 'test123', page_num => 3, bar => 'xxxxx', zed => 'omega' }, 'values saved' );
  54. is_deeply( $wizard->value, { foo => 'test123', page_num => 3, bar => 'xxxxx', zed => 'omega' }, 'value is correct' );
  55. done_testing;