File: nested_repeatable_write.t

package info (click to toggle)
libhtml-formfu-model-dbic-perl 0.06000-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,252 kB
  • ctags: 147
  • sloc: perl: 2,112; makefile: 2
file content (76 lines) | stat: -rw-r--r-- 1,926 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
use strict;
use warnings;
use Test::More tests => 7;

use HTML::FormFu;
use lib 't/lib';
use DBICTestLib 'new_schema';
use MySchema;

my $form = HTML::FormFu->new;

$form->load_config_file('t/update/nested_repeatable_write.yml');

my $schema = new_schema();

my $master = $schema->resultset('Master')->create({ id => 1 });

# first sub-record
{
    # schedule 1
    my $u1 = $master->create_related( 'schedules', { note => 'some appointment',
                                                     date => '02-02-2009' } );

    # task 1
    $u1->create_related( 'tasks' => { detail => 'associated to do item' } );
}

# second sub-record
{
    # schedule 2
    my $u2 = $master->create_related( 'schedules', { note => 'some other appointment',
                                                     date => '03-03-2009' } );

    # task 2
    $u2->create_related( 'tasks', { detail => 'action item 1' } );

    # task 3
    $u2->create_related( 'tasks', { detail => 'action item 2' } );
}

{
    $form->process( {
            'sched_count'                 => 2,
            'schedules_2.id'              => 2,
            'schedules_2.note'            => 'new appointment',
            'schedules_2.count'           => 2,
            'schedules_2.tasks_1.id'      => 2,
            'schedules_2.tasks_1.detail'  => 'new action item 1',
            'schedules_2.tasks_2.id'      => 3,
            'schedules_2.tasks_2.detail'  => 'new action item 2',
        } );

    ok( $form->submitted_and_valid );

    my $row = $schema->resultset('Master')->find(1);

    $form->model->update($row);
}

{
    my $schedule = $schema->resultset('Schedule')->find(2);

    is( $schedule->note, 'new appointment' );

    my @add = $schedule->tasks->all;

    is( scalar @add, 2 );

    is( $add[0]->id,      2 );
    is( $add[0]->detail, 'new action item 1' );

    is( $add[1]->id,      3 );
    is( $add[1]->detail, 'new action item 2' );

}