/xt/init.t

http://github.com/gshank/html-formhandler · Raku · 51 lines · 42 code · 9 blank · 0 comment · 1 complexity · 7ed02f3df146dc34e1802f0ef359368f MD5 · raw file

  1. use strict;
  2. use warnings;
  3. use Test::More;
  4. {
  5. package My::Default;
  6. use Moose::Role;
  7. sub build_default_over_obj {
  8. return 'From Method';
  9. }
  10. }
  11. {
  12. package My::Other::Form;
  13. use HTML::FormHandler::Moose;
  14. extends 'HTML::FormHandler';
  15. has '+name' => ( default => 'testform_' );
  16. has_field 'optname' => ( temp => 'First' );
  17. has_field 'reqname' => ( required => 1, default_over_obj => 'From Attribute' );
  18. has_field 'altname' => ( traits => ['My::Default'] );
  19. has_field 'somename';
  20. has_field 'extraname' => ( default_over_obj => '' );
  21. sub default_somename {
  22. my $self = shift;
  23. return 'SN from meth';
  24. }
  25. }
  26. my $init_object = { reqname => 'Starting Perl', optname => 'Over Again', altname => 'test',
  27. extraname => 'not_empty',
  28. };
  29. my $form = My::Other::Form->new;
  30. ok( $form, 'get form' );
  31. my $params = { reqname => 'Sweet', optname => 'Charity', somename => 'Exists' };
  32. $form->process( init_object => $init_object, params => $params );
  33. ok( $form->validated, 'form with init_obj & params validated' );
  34. is( $form->field('reqname')->init_value, 'From Attribute', 'correct init_value');
  35. is( $form->field('optname')->init_value, 'Over Again', 'correct init_value no meth');
  36. is( $form->field('altname')->init_value, 'From Method', 'correct init_value from trait');
  37. is( $form->field('somename')->init_value, 'SN from meth', 'correct for init_obj undef');
  38. is( $form->field('somename')->value, 'Exists', 'correct value for init_obj undef');
  39. is( $form->field('extraname')->init_value, '', 'correct value for empty string default');
  40. $form = My::Other::Form->new( init_object => $init_object );
  41. is( $form->field('somename')->init_value, 'SN from meth', 'correct init_value new w init_obj');
  42. done_testing;