Resolve $rsrc instance duality on metadata traversal
[dbsrgits/DBIx-Class.git] / t / 87ordered.t
index 63651f6..219c942 100644 (file)
@@ -1,12 +1,14 @@
+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
+
 # vim: filetype=perl
 use strict;
-use warnings;  
+use warnings;
 
 use Test::More;
-use lib qw(t/lib);
+
 use DBICTest;
 
-use POSIX qw(ceil);
+use POSIX ();
 
 my $schema = DBICTest->init_schema();
 
@@ -96,7 +98,32 @@ ok(
   "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) {
@@ -131,7 +158,9 @@ $to_pos = undef;
     $to_pos++;
     $to_group = ($to_group % 3) + 1;
     $to_group_2_base++;
-    $to_group_2 = (ceil($to_group_2_base/3.0) %3) +1
+    $to_group_2 = (
+      POSIX::ceil( $to_group_2_base / 3.0 ) % 3
+    ) + 1;
   }
 }
 foreach my $group_id_2 (1..4) {
@@ -156,15 +185,15 @@ $employee->group_id_2(1);
 $employee->update;
 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" 
+    && check_rs($employees->search_rs({group_id_2=>1, group_id_3=>1})),
+    "overloaded multicol update 1"
 );
 
 $employee = $employees->search({group_id_2=>4, group_id_3=>1})->first;
 $employee->update({group_id_2=>2});
 ok( check_rs($employees->search_rs({group_id_2=>4, group_id_3=>1}))
-    && check_rs($employees->search_rs({group_id_2=>2, group_id_3=>1})), 
-   "overloaded multicol update 2" 
+    && check_rs($employees->search_rs({group_id_2=>2, group_id_3=>1})),
+   "overloaded multicol update 2"
 );
 
 $employee = $employees->search({group_id_2=>3, group_id_3=>1})->first;
@@ -173,21 +202,21 @@ $employee->group_id_3(3);
 $employee->update();
 ok( check_rs($employees->search_rs({group_id_2=>3, group_id_3=>1}))
     && check_rs($employees->search_rs({group_id_2=>1, group_id_3=>3})),
-    "overloaded multicol update 3" 
+    "overloaded multicol update 3"
 );
 
 $employee = $employees->search({group_id_2=>3, group_id_3=>1})->first;
 $employee->update({group_id_2=>2, group_id_3=>3});
 ok( check_rs($employees->search_rs({group_id_2=>3, group_id_3=>1}))
-    && check_rs($employees->search_rs({group_id_2=>2, group_id_3=>3})), 
-    "overloaded multicol update 4" 
+    && check_rs($employees->search_rs({group_id_2=>2, group_id_3=>3})),
+    "overloaded multicol update 4"
 );
 
 $employee = $employees->search({group_id_2=>3, group_id_3=>2})->first;
 $employee->update({group_id_2=>2, group_id_3=>4, position=>2});
 ok( check_rs($employees->search_rs({group_id_2=>3, group_id_3=>2}))
-    && check_rs($employees->search_rs({group_id_2=>2, group_id_3=>4})), 
-    "overloaded multicol update 5" 
+    && check_rs($employees->search_rs({group_id_2=>2, group_id_3=>4})),
+    "overloaded multicol update 5"
 );
 
 sub hammer_rs {