File: compound_update_fields.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 (68 lines) | stat: -rw-r--r-- 1,647 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
67
68
use strict;
use warnings;
use Test::More;
use HTML::FormHandler::Test;

{
    package MyApp::Form::Field::Record;
    use HTML::FormHandler::Moose;
    extends 'HTML::FormHandler::Field::Compound';

    sub build_update_subfields {{
        all => {
            wrapper_class => 'wrap',
            tags => { 'before_element' => '<p>A comment</p>' }
        },
        'sam' => { label_class => 'sam_label' },
    }}

    has_field 'flot';
    has_field 'jet';
    has_field 'sam';

}

{
    package MyApp::Form::Complex;
    use HTML::FormHandler::Moose;
    extends 'HTML::FormHandler';

    has '+name' => ( default => 'test_form' );
    has '+field_name_space' => ( default => sub{ ['MyApp::Form::Field'] } );

    has_field 'foo';
    has_field 'bar' => ( type => 'Record' );

}

my $form = MyApp::Form::Complex->new;
ok( $form, 'form built' );
$form->process;
my $rendered = $form->render;
my $expected =
'<form id="test_form" method="post">
  <div class="form_messages"></div>
  <div>
    <label for="foo">Foo</label>
    <input id="foo" name="foo" type="text" value="" />
  </div>
  <div class="wrap">
    <label for="bar.flot">Flot</label>
    <p>A comment</p>
    <input id="bar.flot" name="bar.flot" type="text" value="" />
  </div>
  <div class="wrap">
    <label for="bar.jet">Jet</label>
    <p>A comment</p>
    <input id="bar.jet" name="bar.jet" type="text" value="" />
  </div>
  <div class="wrap">
    <label class="sam_label" for="bar.sam">Sam</label>
    <p>A comment</p>
    <input id="bar.sam" name="bar.sam" type="text" value="" />
  </div>
</form>';

is_html( $rendered, $expected, 'rendered as expected' );

done_testing;