use strict; use warnings; use Scalar::Util qw/ refaddr /; use Test::More tests => 19; use HTML::FormFu; my $form = HTML::FormFu->new; $form->load_config_file('t/repeatable/clone.yml'); $form->get_all_element( { type => 'Repeatable' } )->repeat(2); $form->process( { 'rep_1.foo' => 'a', 'rep_1.bar' => '', 'rep_2.foo' => '', 'rep_2.bar' => 'd', count => 2, } ); isa_ok( $form, 'HTML::FormFu' ); # fieldset my $fs = $form->get_element; isa_ok( $fs, 'HTML::FormFu::Element::Fieldset' ); is( refaddr( $fs->parent ), refaddr($form), ); # hidden field my $hidden = $form->get_field('count'); isa_ok( $hidden, 'HTML::FormFu::Element::Hidden' ); is( refaddr( $hidden->parent ), refaddr($fs), ); # repeatable my $rep = $fs->get_element( { type => 'Repeatable' } ); isa_ok( $rep, 'HTML::FormFu::Element::Repeatable' ); is( refaddr( $rep->parent ), refaddr($fs), ); # block 1 { my $block = $rep->get_elements->[0]; my $foo = $block->get_fields->[0]; is( refaddr( $foo->parent ), refaddr($block), ); is( refaddr( $foo->get_constraint->parent ), refaddr($foo), ); ok( !$foo->get_error ); my $bar = $block->get_fields->[1]; is( refaddr( $bar->parent ), refaddr($block), ); is( refaddr( $bar->get_constraint->parent ), refaddr($bar), ); is( refaddr( $bar->get_error->parent ), refaddr($bar), ); } # block 2 { my $block = $rep->get_elements->[1]; my $foo = $block->get_fields->[0]; is( refaddr( $foo->parent ), refaddr($block), ); is( refaddr( $foo->get_constraint->parent ), refaddr($foo), ); is( refaddr( $foo->get_error->parent ), refaddr($foo), ); my $bar = $block->get_fields->[1]; is( refaddr( $bar->parent ), refaddr($block), ); is( refaddr( $bar->get_constraint->parent ), refaddr($bar), ); ok( !$bar->get_error ); }