use strict;
use warnings;
use Test::More;
use HTML::FormHandler::Test;
{
package MyApp::Form::InLine::Theme;
use Moose::Role;
# form tag classes
sub build_form_element_class { ['well', 'form-search'] }
# form wrapper class
sub build_form_wrapper_class { ['span9'] }
# turn on form wrapper, set the tag to 'div' (default is fieldset)
sub build_do_form_wrapper {1}
sub build_form_tags {{
wrapper_tag => 'div',
before =>
'
Inline form
Inputs are block level to start. For .form-inline and .form-horizontal, we use inline-block.
',
after => '
',
no_form_message_div => 1,
}}
# update individual fields
sub build_update_subfields {{
email => { element_class => ['input-small'], element_attr => { placeholder => 'Email' } },
password => { element_class => ['input-small'], element_attr => { placeholder => 'Password' },
tags => { wrapper_tag => 0 } },
go => { element_class => ['btn'] },
}}
}
{
package MyApp::Form::InLine;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
with 'MyApp::Form::InLine::Theme';
has '+name' => ( default => 'inline_form' );
has '+widget_wrapper' => ( default => 'None' );
has_field 'email' => ( type => 'Email' );
has_field 'password' => ( type => 'Password' );
has_field 'go' => ( type => 'Submit', widget => 'ButtonTag', value => 'Go' )
}
my $form = MyApp::Form::InLine->new;
$form->process;
my $rendered = $form->render;
my $expected = 'Inline form
Inputs are block level to start. For .form-inline and .form-horizontal, we use inline-block.
';
is_html( $rendered, $expected, 'form renders correctly' );
done_testing;