use strict; use warnings; use Test::More tests => 6; use HTML::FormFu; my $form = HTML::FormFu->new({ tt_args => { INCLUDE_PATH => 'share/templates/tt/xhtml' } }); $form->load_config_file('t/nested/elements/repeatable_repeatable.yml'); $form->process({ 'count' => 2, 'outer_1.foo' => 'a', 'outer_1.count' => 3, 'outer_1.inner_1.bar' => 'b', 'outer_1.inner_2.bar' => 'c', 'outer_1.inner_3.bar' => 'd', 'outer_2.foo' => 'e', 'outer_2.count' => 4, 'outer_2.inner_1.bar' => 'f', 'outer_2.inner_2.bar' => 'g', 'outer_2.inner_3.bar' => 'h', 'outer_2.inner_4.bar' => 'i', }); ok( $form->submitted_and_valid ); is_deeply( $form->params, { count => 2, outer_1 => { foo => 'a', count => 3, inner_1 => { bar => 'b', }, inner_2 => { bar => 'c', }, inner_3 => { bar => 'd', }, }, outer_2 => { foo => 'e', count => 4, inner_1 => { bar => 'f', }, inner_2 => { bar => 'g', }, inner_3 => { bar => 'h', }, inner_4 => { bar => 'i', }, }, } ); my $outer = $form->get_element({ type => 'Repeatable' }); my $inner = $outer->get_element->get_element({ type => 'Repeatable' }); is( $outer->original_nested_name, 'outer' ); is( $inner->original_nested_name, 'inner' ); is( $outer->get_field->original_name, 'foo' ); is( $inner->get_field->original_name, 'bar' );