1use strict;
2use warnings;
3use Test::More tests => 18;
4
5use HTML::FormFu;
6use lib 't/lib';
7use DBICTestLib 'new_schema';
8use MySchema;
9
10my $form = HTML::FormFu->new;
11
12$form->load_config_file('t/default_values/has_many_repeatable_delete_true.yml');
13
14my $schema = new_schema();
15
16my $master = $schema->resultset('Master')->create({ id => 1 });
17
18# row we're going to use
19
20$master->create_related( 'user', {
21        name      => 'nick',
22        addresses => [ { address => 'home', }, { address => 'office', } ] } );
23
24{
25    my $row = $schema->resultset('User')->find(1);
26
27    $form->model->default_values($row);
28
29    is( $form->get_field('id')->default,    '1' );
30    is( $form->get_field('name')->default,  'nick' );
31    is( $form->get_field('count')->default, '4' );
32
33    my $block = $form->get_all_element( { nested_name => 'addresses' } );
34
35    my @reps = @{ $block->get_elements };
36
37    is( scalar @reps, 4 );
38
39    is( $reps[0]->nested_name,                   'addresses_1' );
40
41    is( $reps[0]->get_field('id')->default,      '1' );
42    is( $reps[0]->get_field('address')->default, 'home' );
43
44    ok( $reps[0]->get_field({ type => 'Checkbox' }) );
45
46    is( $reps[1]->nested_name,                   'addresses_2' );
47
48    is( $reps[1]->get_field('id')->default,      '2' );
49    is( $reps[1]->get_field('address')->default, 'office' );
50
51    ok( $reps[1]->get_field({ type => 'Checkbox' }) );
52
53    # empty rows
54
55    is( $reps[2]->get_field('id')->default,      undef );
56    is( $reps[2]->get_field('address')->default, undef );
57
58    # checkbox has been removed
59    ok( !$reps[2]->get_field({ type => 'Checkbox' }) );
60
61    is( $reps[3]->get_field('id')->default,      undef );
62    is( $reps[3]->get_field('address')->default, undef );
63
64    # checkbox has been removed
65    ok( !$reps[3]->get_field({ type => 'Checkbox' }) );
66}
67
68