File: list.t

package info (click to toggle)
libhtml-formhandler-perl 0.40057-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,320 kB
  • ctags: 685
  • sloc: perl: 8,849; makefile: 2
file content (66 lines) | stat: -rw-r--r-- 1,479 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
use strict;
use warnings;
use Test::More;

use_ok('HTML::FormHandler::Field::Repeatable');

{
   package List::Form;
   use HTML::FormHandler::Moose;
   extends 'HTML::FormHandler';

   has_field 'name';
   has_field 'tags' => ( type => 'Repeatable' );
   has_field 'tags.contains';

   sub validate_tags_contains {
       my ( $self, $field ) = @_;
       if ( $field->value eq 'busybee' ) {
           $field->add_error('That tag is not allowed');
       }
   }
}

my $form = List::Form->new;
ok( $form, 'form created' );

# check for single empty repeatable
$form->process;
my $fif = {
   'name' => '',
   'tags.0' => '',
};
is_deeply( $form->fif, $fif, 'fif ok' );
is_deeply( $form->value, {}, 'value ok' );

# empty arrayref for repeatable
$fif->{name} = 'mary';
$form->process( $fif );
is_deeply( $form->value, { name => 'mary', tags => [] },
   'value is ok' );

my $params = {
   name => 'joe',
   tags => ['linux', 'algorithms', 'loops'],
};
$form->process($params);

ok( $form->validated, 'form validated' );

is( $form->field('tags')->field('0')->value, 'linux', 'get correct value' );

$fif = {
   'name' => 'joe',
   'tags.0' => 'linux',
   'tags.1' => 'algorithms',
   'tags.2' => 'loops',
};
is_deeply( $form->fif, $fif, 'fif is correct' );

is_deeply( $form->values, $params, 'values are correct' );

$params = { name => 'sally', tags => ['busybee', 'sillysally', 'missymim'] };
$form->process($params);
ok( $form->has_errors, 'form has errors' );

done_testing;