use strict; use warnings; use Test::More; use HTML::FormHandler::Test; { package HTML::FormHandler::Render::FFTheme; use Moose::Role; sub build_update_subfields {{ all => { tags => { no_wrapped_label => 1 } } }} sub html_attributes { my ( $self, $field, $type, $attr ) = @_; my $class = $attr->{class} || []; if( $type eq 'wrapper' ) { # this is not exactly like what FF does, but it's close push @$class, $field->type_attr; push @$class, 'label' if $field->do_label; $attr->{class} = $class; } return $attr; } } { package Test::Form; use HTML::FormHandler::Moose; extends 'HTML::FormHandler'; with 'HTML::FormHandler::Render::FFTheme'; has '+name' => ( default => 'test_form' ); has '+action' => ( default => '/form' ); has_field 'user' => ( label => 'Username' ); has_field 'pass' => ( type => 'Password', label => 'Password' ); has_field 'opt_in' => ( type => 'Checkbox', label => 'Opt in?', ); has_field 'choose' => ( type => 'Select', label => 'Choose some', options => [ { label => 'blue', value => 1 }, { label => 'red', value => 2 }] ); has_field 'submit' => ( type => 'Submit', value => "Save" ); } my $expected = '
'; my $form = Test::Form->new; $form->process; my $rendered = $form->render; is_html($rendered, $expected, 'renders ok' ); done_testing;