use strict;
use warnings;
use Test::More;
use HTML::FormHandler::Test;
{
package MyApp::Form::Basic::Theme;
use Moose::Role;
# make a wrapper around the form
sub build_do_form_wrapper {1}
# set the class for the form wrapper
sub build_form_wrapper_class { ['span9'] }
# set the class for the form element
sub build_form_element_class { ['well'] }
# set various rendering tags
sub build_form_tags {
{ wrapper_tag => 'div',
before => qq{
With v2.0, we have
lighter and smarter defaults for form styles. No extra markup, just
form controls.
\n},
after => '
',
}
}
# the settings in 'build_update_subfields' are merged with the field
# definitions before they are constructed
sub build_update_subfields {{
# all fields have a label but no wrapper
all => { do_wrapper => 0, do_label => 1 },
# set the element class, a placeholder in element_attr
foo => { element_class => ['span3'],
element_attr => { placeholder => 'Type something…' },
tags => { after_element =>
qq{\nAssociated help text!} } },
bar => { option_label => 'Check me out',
label_class => ['checkbox'], do_label => 0 },
submit_btn => { element_class => ['btn'] },
}}
}
{
package MyApp::Form::Basic;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
with 'MyApp::Form::Basic::Theme';
with 'HTML::FormHandler::Widget::Theme::BootstrapFormMessages';
has '+name' => ( default => 'basic_form' );
has_field 'foo' => ( type => 'Text' );
has_field 'bar' => ( type => 'Checkbox' );
has_field 'submit_btn' => ( type => 'Submit', value => 'Submit', widget => 'ButtonTag' );
}
my $form = MyApp::Form::Basic->new;
ok( $form, 'form built' );
$form->process({});
my $rendered = $form->render;
my $expected = '
With v2.0, we have lighter and smarter defaults for form styles. No extra markup, just form controls.
';
is_html($rendered, $expected, 'rendered correctly');
# check foo
$rendered = $form->field('foo')->render;
$expected =
'
Associated help text!';
is_html($rendered, $expected, 'foo field is correct' );
# check bar
$rendered = $form->field('bar')->render;
$expected =
'';
is_html($rendered, $expected, 'bar field is correct' );
$form->process( params => {}, info_message => 'Fill in the form!' );
$rendered = $form->render_form_messages;
$expected =
'
Fill in the form!';
is_html($rendered, $expected, 'info message rendered ok' );
done_testing;