X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F87ordered.t;h=09805093d9841da37feb3759303cc8a46b0b6139;hb=5ef76b8b1094769245360ff8bf800fbde46119e6;hp=1d9f17a21c6d26cd6b4871fd975bc4b05fdc138a;hpb=8f5357074109c0b803f1565921cb13f85449d8d1;p=dbsrgits%2FDBIx-Class.git diff --git a/t/87ordered.t b/t/87ordered.t index 1d9f17a..0980509 100644 --- a/t/87ordered.t +++ b/t/87ordered.t @@ -10,8 +10,6 @@ use POSIX qw(ceil); my $schema = DBICTest->init_schema(); -plan tests => 1269; - my $employees = $schema->resultset('Employee'); $employees->delete(); @@ -42,11 +40,9 @@ foreach my $group_id (1..4) { my $group_3 = $employees->search({group_id=>3}); my $to_group = 1; my $to_pos = undef; -# now that we have transactions we need to work around stupid sqlite { my @empl = $group_3->all; while (my $employee = shift @empl) { - $employee->discard_changes; # since we are effective shift()ing the $rs while doing this $employee->move_to_group($to_group, $to_pos); $to_pos++; $to_group = $to_group==1 ? 2 : 1; @@ -54,7 +50,6 @@ my $to_pos = undef; } foreach my $group_id (1..4) { my $group_employees = $employees->search({group_id=>$group_id}); - $group_employees->all(); ok( check_rs($group_employees), "group positions after move_to_group" ); } @@ -69,39 +64,64 @@ $employee = $employees->search({group_id=>4})->first; $employee->group_id(1); $employee->update; ok( - check_rs($employees->search_rs({group_id=>1})) && check_rs($employees->search_rs({group_id=>4})), - "overloaded update 3" + check_rs($employees->search_rs({group_id=>1})) && check_rs($employees->search_rs({group_id=>4})), + "overloaded update 3" ); $employee = $employees->search({group_id=>4})->first; $employee->update({group_id=>2}); ok( - check_rs($employees->search_rs({group_id=>2})) && check_rs($employees->search_rs({group_id=>4})), - "overloaded update 4" + check_rs($employees->search_rs({group_id=>2})) && check_rs($employees->search_rs({group_id=>4})), + "overloaded update 4" ); $employee = $employees->search({group_id=>4})->first; $employee->group_id(1); $employee->position(3); $employee->update; ok( - check_rs($employees->search_rs({group_id=>1})) && check_rs($employees->search_rs({group_id=>4})), - "overloaded update 5" + check_rs($employees->search_rs({group_id=>1})) && check_rs($employees->search_rs({group_id=>4})), + "overloaded update 5" ); $employee = $employees->search({group_id=>4})->first; $employee->group_id(2); $employee->position(undef); $employee->update; ok( - check_rs($employees->search_rs({group_id=>2})) && check_rs($employees->search_rs({group_id=>4})), - "overloaded update 6" + check_rs($employees->search_rs({group_id=>2})) && check_rs($employees->search_rs({group_id=>4})), + "overloaded update 6" ); $employee = $employees->search({group_id=>4})->first; $employee->update({group_id=>1,position=>undef}); ok( - check_rs($employees->search_rs({group_id=>1})) && check_rs($employees->search_rs({group_id=>4})), - "overloaded update 7" + check_rs($employees->search_rs({group_id=>1})) && check_rs($employees->search_rs({group_id=>4})), + "overloaded update 7" ); +$employee->group_id(2); +$employee->name('E of the month'); +$employee->update({ employee_id => 666, position => 2 }); +is_deeply( + { $employee->get_columns }, + { + employee_id => 666, + encoded => undef, + group_id => 2, + group_id_2 => undef, + group_id_3 => undef, + name => "E of the month", + position => 2 + }, + 'combined update() worked correctly' +); +is_deeply( + { $employee->get_columns }, + { $employee->get_from_storage->get_columns }, + 'object matches database state', +); + +##### # multicol tests begin here +##### + DBICTest::Employee->grouping_column(['group_id_2', 'group_id_3']); $employees->delete(); foreach my $group_id_2 (1..4) { @@ -129,7 +149,6 @@ my $to_group_2_base = 7; my $to_group_2 = 1; $to_pos = undef; -# now that we have transactions we need to work around stupid sqlite { my @empl = $group_3->all; while (my $employee = shift @empl) { @@ -143,7 +162,6 @@ $to_pos = undef; foreach my $group_id_2 (1..4) { foreach my $group_id_3 (1..4) { my $group_employees = $employees->search({group_id_2=>$group_id_2,group_id_3=>$group_id_3}); - $group_employees->all(); ok( check_rs($group_employees), "group positions after move_to_group" ); } } @@ -161,7 +179,7 @@ $employees = $employees->search(undef,{order_by=>[qw/group_id_2 group_id_3 posit $employee = $employees->search({group_id_2=>4, group_id_3=>1})->first; $employee->group_id_2(1); $employee->update; -ok( +ok( check_rs($employees->search_rs({group_id_2=>4, group_id_3=>1})) && check_rs($employees->search_rs({group_id_2=>1, group_id_3=>1})), "overloaded multicol update 1" @@ -275,3 +293,4 @@ sub check_rs { return 1; } +done_testing;