File: radio_group.t

package info (click to toggle)
libhtml-formhandler-perl 0.40013-1%2Bdeb7u1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 2,136 kB
  • sloc: perl: 8,102; makefile: 2
file content (70 lines) | stat: -rw-r--r-- 2,398 bytes parent folder | download
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
use strict;
use warnings;
use Test::More;
use HTML::FormHandler::Test;

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

    has_field 'opt_in'     => (
        type    => 'Select',
        widget  => 'RadioGroup',
        options => [
            { value => 'no & never', label => 'No & Never', },
            { value => '"yes"', label => 'Yes' },
        ]
    );
}

my $form = Test::Form->new;
$form->process;
my $expected =
'<div>
  <label for="opt_in">Opt in</label>
  <label class="radio" for="opt_in.0">
    <input type="radio" value="no &amp; never" name="opt_in" id="opt_in.0" />
    No &amp; Never
   </label>
  <label class="radio" for="opt_in.1">
    <input type="radio" value="&quot;yes&quot;" name="opt_in" id="opt_in.1" />
    Yes
  </label>
</div>';

my $rendered = $form->field('opt_in')->render;
is_html( $rendered, $expected, 'radio group rendered ok' );

my $params = {
    opt_in             => 'no & never',
};
$form->process( update_field_list => { opt_in => { tags => { 'radio_br_after' => 1 }}}, params => $params);
$rendered = $form->field('opt_in')->render;
$expected =
'<div>
  <label for="opt_in">Opt in</label><br />
  <label class="radio" for="opt_in.0">
    <input type="radio" value="no &amp; never" name="opt_in" id="opt_in.0" checked="checked" />
    No &amp; Never
  </label><br />
  <label class="radio" for="opt_in.1"><input type="radio" value="&quot;yes&quot;" name="opt_in" id="opt_in.1" />
    Yes
  </label><br />
</div>';

is_html( $rendered, $expected, 'output from radio group');

# create form with no label rendering for opt_in
$form = Test::Form->new( field_list => [ '+opt_in' => { do_label => 0 } ] );
$form->process;
# first individually rendered option
$rendered = $form->field('opt_in')->render_option({ value => 'test', label => 'Test'});
$expected = '<label class="radio" for="opt_in.0"><input id="opt_in.0" name="opt_in" type="radio" value="test" /> Test </label>';
is_html( $rendered, $expected, 'individual option rendered ok' );
# second rendered option is wrapped
$rendered = $form->field('opt_in')->render_wrapped_option({ value => 'abcde', label => 'Abcde' });
$expected = '<div><label class="radio" for="opt_in.1"><input id="opt_in.1" name="opt_in" type="radio" value="abcde" /> Abcde </label></div>';
is_html( $rendered, $expected, 'indvidual wrapped option rendered ok' );

done_testing;