File: hashref_default_values.t

package info (click to toggle)
libhtml-formfu-perl 0.09007-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 4,184 kB
  • sloc: perl: 13,186; makefile: 9; sql: 5
file content (146 lines) | stat: -rw-r--r-- 4,710 bytes parent folder | download | duplicates (2)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
use strict;
use warnings;

use Test::More tests => 36;

use HTML::FormFu;

my $form = HTML::FormFu->new(
    { tt_args => { INCLUDE_PATH => 'share/templates/tt/xhtml' } } );

$form->element('Checkbox')->name('bar')->value('y');

$form->auto_fieldset(1);

$form->default_model('HashRef');

$form->populate(
    {
        elements => [
            {
                type         => "DateTime",
                name         => "datetime",
                auto_inflate => 1,
                year         => { list => [1999] }
            },
            {
                name     => "inflator",
                deflator => { type => 'Strftime', strftime => '%F %H:%M' },
                inflator =>
                  { type => "DateTime", parser => { strptime => '%F' } }
            },
            {
                type        => "Repeatable",
                nested_name => "many",
                elements    => [
                    { name => "id" },
                    {
                        type     => "Block",
                        name     => "nested",
                        elements => [ { type => "Text", name => "foo" } ]
                    }
                ]
            },
            {
                type    => "Select",
                name    => "single-select",
                options => [ [qw(1 foo)], [qw(2 bar)] ]
            },
            {
                type    => "Select",
                name    => "multi-select",
                options => [ [qw(1 foo)], [qw(2 bar)] ]
            },
            {
                type        => "Block",
                nested_name => "nested",
                elements    => [ { type => "Text", name => "foo" } ]
            },
            {
                type     => "Multi",
                name     => "address",
                elements => [ { name => "street" }, { name => "number" } ]
            },
            {
                type     => "Multi",
                name     => "address-split",
                elements => [ { name => "street" }, { name => "number" } ],
                deflators => [ { type => "CompoundSplit" } ]
            },
            {
                type => "SimpleTable",
                rows => [ [ { name => "table1" } ] ]
            }
        ]
    }
);


for ( 0 .. 1 ) {

    $form->auto_fieldset($_);
    $form->model->default_values(
        {
            datetime => '30-08-1999 22:00',
            bar      => 'y',
            many => [ { id => 1, foo => "bar" }, { id => 2, foo => "baz" } ],
            'single-select' => 1,
			'inflator' => '2008-09-22',
            'multi-select'  => [ 1, 2 ],
            nested          => { foo => "bar" },
            address         => { street => "Lombardstreet", number => 22 },
            'address-split' => "Lombardstreet 22",
            table1          => "test"
        }
    );

    $form->process;

    like( $form->get_field('datetime_minute'),
        qr/<option value="00" selected="selected">00<\/option>/ );
    like( $form->get_field('datetime_hour'),
        qr/<option value="22" selected="selected">22<\/option>/ );
    like( $form->get_field('datetime_year'),
        qr/<option value="1999" selected="selected">1999<\/option>/ );

    like( $form->get_field('bar'), qr/value="y"/ );
    like( $form->get_field('bar'), qr/checked="checked"/ );

    like( $form->get_field('single-select'),
        qr/value="1" selected="selected"/ );
    like( $form->get_field('single-select'), qr/value="2">/ );

    like( $form->get_field('multi-select'), qr/value="1" selected="selected"/ );
    like( $form->get_field('multi-select'), qr/value="2" selected="selected"/ );

    like( $form->get_field('address'),
        qr/name="address.street" type="text" value="Lombardstreet"/ );
    like( $form->get_field('address'),
        qr/name="address.number" type="text" value="22"/ );

    like( $form->get_field('address-split'),
        qr/name="address-split.street" type="text" value="Lombardstreet"/ );
    like( $form->get_field('address-split'),
        qr/name="address-split.number" type="text" value="22"/ );

    like( $form->get_field('table1'),
        qr/name="table1" type="text" value="test"/ );

    like(
        $form->get_all_element( { nested_name => 'many' } ),
        qr/name="many_1.id" type="text" value="1"/
    );
    like(
        $form->get_all_element( { nested_name => 'many' } ),
        qr/name="many_2.id" type="text" value="2"/
    );
    like(
        $form->get_all_element( { nested_name => 'many' } ),
        qr/name="many_1.foo" type="text" value="bar"/
    );
    like(
        $form->get_all_element( { nested_name => 'many' } ),
        qr/name="many_2.foo" type="text" value="baz"/
    );

}