use strict; use warnings; use Test::More; use HTML::TreeBuilder; { package Test::Form; use HTML::FormHandler::Moose; extends 'HTML::FormHandler'; sub build_update_subfields {{ by_flag => { repeatable => { do_wrapper => 1, do_label => 1 } } }} has '+name' => ( default => 'test_form' ); has_field 'foo' => ( type => 'Repeatable', num_when_empty => 2, wrapper_attr => { class => 'hfhrep' }, label => 'Foo Records' ); has_field 'foo.id' => ( type => 'PrimaryKey' ); has_field 'foo.one'; has_field 'foo.two'; has_field 'foo.three'; has_field 'bar'; sub html_attributes { my ( $self, $field, $type, $attr ) = @_; if( $type eq 'wrapper' && $field->has_flag('is_contains') ) { $attr->{class} = ['hfh', 'repinst']; } return $attr; } } my $form = Test::Form->new; $form->process({}); ok( $form, 'form built' ); my $rendered = $form->render; my $expected = '
Foo Records
'; my $exp = HTML::TreeBuilder->new_from_content($expected); my $got = HTML::TreeBuilder->new_from_content($rendered); is( $got->as_HTML, $exp->as_HTML, "rendered as expected" ); done_testing;