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;