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
|
use strict;
use warnings;
use Test::More;
use HTML::FormHandler::Test;
$ENV{LANGUAGE_HANDLE} = 'en_en';
use_ok('HTML::FormHandler::Widget::Wrapper::Bootstrap3');
{
package MyApp::Form::Test;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
has '+widget_wrapper' => ( default => 'Bootstrap3' );
sub build_form_tags {{
'layout_classes' => {
label_class => ['col-lg-2'],
element_wrapper_class => ['col-lg-10'],
no_label_element_wrapper_class => ['col-lg-offset-2'],
},
}}
has_field 'foo' => ( required => 1 );
has_field 'bar';
has_field 'active' => ( type => 'Checkbox' );
has_field 'vegetables' => ( type => 'Multiple', widget => 'RadioGroup' );
sub options_vegetables {
return (
1 => 'lettuce',
2 => 'broccoli',
3 => 'carrots',
4 => 'peas',
);
}
has_field 'save' => ( type => 'Submit' );
}
my $form = MyApp::Form::Test->new;
ok( $form, 'form builds' );
my $expected = '
<div class="form-group">
<label class="col-lg-2 control-label" for="foo">Foo</label>
<div class="col-lg-10">
<input class="form-control" id="foo" name="foo" type="text" value="" />
</div>
</div>
';
my $rendered = $form->field('foo')->render;
is_html( $rendered, $expected, 'foo renders ok' );
$expected = '
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<div class="checkbox">
<label for="active">
<input id="active" name="active" type="checkbox" value="1" /> Active
</label>
</div>
</div>
</div>
';
$rendered = $form->field('active')->render;
is_html( $rendered, $expected, 'checkbox renders ok' );
$expected = '
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<input id="save" name="save" type="submit" value="Save" />
</div>
</div>
';
$rendered = $form->field('save')->render;
is_html( $rendered, $expected, 'submit button renders ok' );
$expected = '
<div class="form-group">
<label class="col-lg-2 control-label" for="vegetables">Vegetables</label>
<div class="col-lg-10">
<div class="radio">
<label class="radio" for="vegetables.0">
<input id="vegetables.0" name="vegetables" type="radio" value="1" />
lettuce
</label>
</div>
<div class="radio">
<label class="radio" for="vegetables.1">
<input id="vegetables.1" name="vegetables" type="radio" value="2" />
broccoli
</label>
</div>
<div class="radio">
<label class="radio" for="vegetables.2">
<input id="vegetables.2" name="vegetables" type="radio" value="3" />
carrots
</label>
</div>
<div class="radio">
<label class="radio" for="vegetables.3">
<input id="vegetables.3" name="vegetables" type="radio" value="4" />
peas
</label>
</div>
</div>
</div>
';
$rendered = $form->field('vegetables')->render;
is_html( $rendered, $expected, 'radio group renders' );
# after processing
$form->process( params => { bar => 'bar' } );
$expected = '
<div class="form-group has-error">
<label class="col-lg-2 control-label" for="foo">Foo</label>
<div class="col-lg-10">
<input class="has-error form-control" id="foo" name="foo" type="text" value="" />
<span class="help-block">Foo field is required</span>
</div>
</div>
';
$rendered = $form->field('foo')->render;
is_html( $rendered, $expected, 'foo renders ok with error' );
done_testing;
|