use strict; use warnings; use Test::More; use HTML::FormHandler::Test; { package Test::Form; use HTML::FormHandler::Moose; extends 'HTML::FormHandler'; sub build_form_tags {{ form_text => 'testing', }} sub build_update_subfields {{ all => { tags => { wrapper_tag => 'p', label_tag => 'span', } }, }} has_field 'foo'; has_field 'bar'; has_field 'vax'; has_field 'multi' => ( type => 'Compound' ); has_field 'multi.one'; has_field 'multi.two'; has_field 'records' => ( type => 'Repeatable' ); has_field 'records.one'; has_field 'records.two'; sub html_attributes { my ( $self, $field, $type, $attr ) = @_; $attr->{class} = ['label'] if $type eq 'label'; return $attr; } } my $form = Test::Form->new; $form->process({}); my $rendered = $form->render; unlike( $rendered, qr/fieldset/, 'no fieldset rendered' ); unlike( $rendered, qr/Foo: /, 'no colon in label' ); like( $rendered, qr/

Multi<\/legend>/, 'no fieldset around compound' ); like( $rendered, qr/Bar<\/span>/, 'label formatted with span and class' ); ok( ! exists $form->field('foo')->tags->{form_text}, 'no form widgets tags in fields' ); my $exp_tags = { wrapper_tag => 'p', label_tag => 'span' }; my $got_tags = $form->field('records.0')->tags; is_deeply( $got_tags, $exp_tags, 'correct tags' ); { package Test::Tags; use HTML::FormHandler::Moose; extends 'HTML::FormHandler'; has_field 'foo'; sub build_do_form_wrapper {1} sub build_update_subfields {{ all => { tags => { wrapper_tag => 'p' } } }} has_field 'bar' => ( tags => {wrapper_tag => 'span'}); has_field 'baz' => ( do_wrapper => 0 ); sub html_attributes { my ( $self, $field, $type, $attr ) = @_; $attr->{class} = 'label' if $type eq 'label'; return $attr; } } $form = Test::Tags->new; $form->process( { foo => 'bar' } ); is_html( $form->field('foo')->render, '

', 'renders with different tags'); is_html( $form->field('bar')->render, ' ', 'field renders with custom tags' ); is_html( $form->field('baz')->render, ' ', 'field renders with false wrapper_tag' ); done_testing;