Undid the previous tweaks to the already existing tests and added new tests instead.
[dbsrgits/DBIx-Class.git] / t / 101populate_rs.t
index d849780..52aa332 100644 (file)
@@ -15,7 +15,7 @@ use Test::More;
 use lib qw(t/lib);
 use DBICTest;
 
-plan tests => 182;
+plan tests => 146;
 
 
 ## ----------------------------------------------------------------------------
@@ -23,16 +23,10 @@ plan tests => 182;
 ## ----------------------------------------------------------------------------
 
 my $schema     = DBICTest->init_schema();
-
-$schema->resultset('Genre')->create({
-  genreid => 1,
-  name => 'Mixed',
-});
-
 my $art_rs     = $schema->resultset('Artist');
-my $restricted_art_rs  = $art_rs->search({rank => 42});
 my $cd_rs      = $schema->resultset('CD');
-my $restricted_cd_rs   = $cd_rs->search({genreid => 1});
+
+my $restricted_art_rs  = $art_rs->search({rank => 42});
 
 ok( $schema, 'Got a Schema object');
 ok( $art_rs, 'Got Good Artist Resultset');
@@ -172,7 +166,7 @@ ARRAY_CONTEXT: {
                
                ## Get the result row objects.
                
-               my ($girl, $crap, $damn, $formerly) = $restricted_art_rs->populate($artists);
+               my ($girl, $crap, $damn, $formerly) = $art_rs->populate($artists);
                
                ## Do we have the right object?
                
@@ -187,10 +181,6 @@ ARRAY_CONTEXT: {
                ok( $girl->name eq 'Angsty-Whiny Girl', "Got Correct name for result object");
                ok( $damn->name eq 'Like I Give a Damn', "Got Correct name for result object"); 
                ok( $formerly->name eq 'Formerly Named', "Got Correct name for result object");
-               cmp_ok( $crap->rank, '==', 42, "Got Correct rank for result object");
-               cmp_ok( $girl->rank, '==', 42, "Got Correct rank for result object");
-               cmp_ok( $damn->rank, '==', 42, "Got Correct rank for result object");   
-               cmp_ok( $formerly->rank, '==', 42, "Got Correct rank for result object");
                
                ## Create the expected children sub objects?
                
@@ -250,7 +240,7 @@ ARRAY_CONTEXT: {
                
                ## Get the result row objects.
                
-               my ($girl, $crap, $damn, $formerly) = $restricted_art_rs->populate($artists);
+               my ($girl, $crap, $damn, $formerly) = $art_rs->populate($artists);
                
                ## Do we have the right object?
                
@@ -266,10 +256,6 @@ ARRAY_CONTEXT: {
                ok( $girl->artistid == $first_aid, "Got Correct artist PK for result object");          
                ok( $damn->name eq 'PK_Like I Give a Damn', "Got Correct name for result object");      
                ok( $formerly->name eq 'PK_Formerly Named', "Got Correct name for result object");
-               cmp_ok( $crap->rank, '==', 42, "Got Correct rank for result object");
-               cmp_ok( $girl->rank, '==', 42, "Got Correct rank for result object");
-               cmp_ok( $damn->rank, '==', 42, "Got Correct rank for result object");   
-               cmp_ok( $formerly->rank, '==', 42, "Got Correct rank for result object");
                
                ## Create the expected children sub objects?
                
@@ -305,21 +291,17 @@ ARRAY_CONTEXT: {
                        },              
                ];
                
-               my ($cdA, $cdB) = $restricted_cd_rs->populate($cds);
+               my ($cdA, $cdB) = $cd_rs->populate($cds);
                
 
                isa_ok($cdA, 'DBICTest::CD', 'Created CD');
                isa_ok($cdA->artist, 'DBICTest::Artist', 'Set Artist');
                is($cdA->artist->name, 'Fred BloggsC', 'Set Artist to FredC');
-               isa_ok($cdA->genre, 'DBICTest::Genre', 'Set Genre');
-               cmp_ok($cdA->genre->id, '==', 1, 'Set Genre ID to 1');
 
                
                isa_ok($cdB, 'DBICTest::CD', 'Created CD');
                isa_ok($cdB->artist, 'DBICTest::Artist', 'Set Artist');
                is($cdB->artist->name, 'Fred BloggsD', 'Set Artist to FredD');
-               isa_ok($cdB->genre, 'DBICTest::Genre', 'Set Genre');
-               cmp_ok($cdB->genre->id, '==', 1, 'Set Genre ID to 1');
        }
 
        BELONGS_TO_WITH_PKs: {
@@ -342,21 +324,29 @@ ARRAY_CONTEXT: {
                        },              
                ];
                
-               my ($cdA, $cdB) = $restricted_cd_rs->populate($cds);
+               my ($cdA, $cdB) = $cd_rs->populate($cds);
                
                isa_ok($cdA, 'DBICTest::CD', 'Created CD');
                isa_ok($cdA->artist, 'DBICTest::Artist', 'Set Artist');
                is($cdA->artist->name, 'Fred BloggsC', 'Set Artist to FredC');
-               isa_ok($cdA->genre, 'DBICTest::Genre', 'Set Genre');
-               cmp_ok($cdA->genre->id, '==', 1, 'Set Genre ID to 1');
                
                isa_ok($cdB, 'DBICTest::CD', 'Created CD');
                isa_ok($cdB->artist, 'DBICTest::Artist', 'Set Artist');
                is($cdB->artist->name, 'Fred BloggsD', 'Set Artist to FredD');
                ok($cdB->artist->artistid == $aid, "Got Expected Artist ID");
-               isa_ok($cdB->genre, 'DBICTest::Genre', 'Set Genre');
-               cmp_ok($cdB->genre->id, '==', 1, 'Set Genre ID to 1');
        }
+
+  WITH_COND_FROM_RS: {
+  
+    my ($more_crap) = $restricted_art_rs->populate([
+      {
+        name => 'More Manufactured Crap',
+      },
+    ]);
+    
+    ## Did it use the condition in the resultset?
+    cmp_ok( $more_crap->rank, '==', 42, "Got Correct rank for result object");
+  } 
 }
 
 
@@ -419,7 +409,7 @@ VOID_CONTEXT: {
                
                ## Get the result row objects.
                
-               $restricted_art_rs->populate($artists);
+               $art_rs->populate($artists);
                
                my ($undef, $girl, $formerly, $damn, $crap) = $art_rs->search(
                
@@ -442,11 +432,6 @@ VOID_CONTEXT: {
                ok( $damn->name eq 'VOID_PK_Like I Give a Damn', "Got Correct name for result object"); 
                ok( $formerly->name eq 'VOID_PK_Formerly Named', "Got Correct name for result object");
                ok( !defined $undef->name, "Got Correct name 'is undef' for result object");            
-               cmp_ok( $crap->rank, '==', 42, "Got Correct rank for result object");
-               cmp_ok( $girl->rank, '==', 42, "Got Correct rank for result object");
-               cmp_ok( $damn->rank, '==', 42, "Got Correct rank for result object");   
-               cmp_ok( $formerly->rank, '==', 42, "Got Correct rank for result object");
-               cmp_ok( $undef->rank, '==', 42, "Got Correct rank for result object");
                
                ## Create the expected children sub objects?
                ok( $crap->can('cds'), "Has cds relationship");
@@ -490,7 +475,7 @@ VOID_CONTEXT: {
                        },              
                ];
                
-               $restricted_cd_rs->populate($cds);
+               $cd_rs->populate($cds);
                
                my ($cdA, $cdB) = $cd_rs->search(
                        {title=>[sort map {$_->{title}} @$cds]},
@@ -500,15 +485,11 @@ VOID_CONTEXT: {
                isa_ok($cdA, 'DBICTest::CD', 'Created CD');
                isa_ok($cdA->artist, 'DBICTest::Artist', 'Set Artist');
                is($cdA->artist->name, 'Fred BloggsCB', 'Set Artist to FredCB');
-               isa_ok($cdA->genre, 'DBICTest::Genre', 'Set Genre');
-               cmp_ok($cdA->genre->id, '==', 1, 'Set Genre ID to 1');
                
                isa_ok($cdB, 'DBICTest::CD', 'Created CD');
                isa_ok($cdB->artist, 'DBICTest::Artist', 'Set Artist');
                is($cdB->artist->name, 'Fred BloggsDB', 'Set Artist to FredDB');
                ok($cdB->artist->artistid == $aid, "Got Expected Artist ID");
-               isa_ok($cdB->genre, 'DBICTest::Genre', 'Set Genre');
-               cmp_ok($cdB->genre->id, '==', 1, 'Set Genre ID to 1');
        }
 
        BELONGS_TO_NO_PKs: {
@@ -534,7 +515,7 @@ VOID_CONTEXT: {
                        },              
                ];
                
-               $restricted_cd_rs->populate($cds);
+               $cd_rs->populate($cds);
                
                my ($cdA, $cdB, $cdC) = $cd_rs->search(
                        {title=>[sort map {$_->{title}} @$cds]},
@@ -545,22 +526,16 @@ VOID_CONTEXT: {
                isa_ok($cdA->artist, 'DBICTest::Artist', 'Set Artist');
                is($cdA->title, 'Some CD3BB', 'Found Expected title');
                is($cdA->artist->name, 'Fred BloggsCBB', 'Set Artist to FredCBB');
-               isa_ok($cdA->genre, 'DBICTest::Genre', 'Set Genre');
-               cmp_ok($cdA->genre->id, '==', 1, 'Set Genre ID to 1');
                
                isa_ok($cdB, 'DBICTest::CD', 'Created CD');
                isa_ok($cdB->artist, 'DBICTest::Artist', 'Set Artist');
                is($cdB->title, 'Some CD4BB', 'Found Expected title');
                is($cdB->artist->name, 'Fred BloggsDBB', 'Set Artist to FredDBB');
-               isa_ok($cdB->genre, 'DBICTest::Genre', 'Set Genre');
-               cmp_ok($cdB->genre->id, '==', 1, 'Set Genre ID to 1');
                
                isa_ok($cdC, 'DBICTest::CD', 'Created CD');
                isa_ok($cdC->artist, 'DBICTest::Artist', 'Set Artist');
                is($cdC->title, 'Some CD5BB', 'Found Expected title');
                is( $cdC->artist->name, undef, 'Set Artist to something undefined');
-               isa_ok($cdC->genre, 'DBICTest::Genre', 'Set Genre');
-               cmp_ok($cdC->genre->id, '==', 1, 'Set Genre ID to 1');
        }
        
        
@@ -598,7 +573,7 @@ VOID_CONTEXT: {
                
                ## Get the result row objects.
                
-               $restricted_art_rs->populate($artists);
+               $art_rs->populate($artists);
                
                my ($girl, $formerly, $damn, $crap) = $art_rs->search(
                        {name=>[sort map {$_->{name}} @$artists]},
@@ -618,10 +593,6 @@ VOID_CONTEXT: {
                ok( $girl->name eq 'VOID_Angsty-Whiny Girl', "Got Correct name for result object");
                ok( $damn->name eq 'VOID_Like I Give a Damn', "Got Correct name for result object");    
                ok( $formerly->name eq 'VOID_Formerly Named', "Got Correct name for result object");
-               cmp_ok( $crap->rank, '==', 42, "Got Correct rank for result object");
-               cmp_ok( $girl->rank, '==', 42, "Got Correct rank for result object");
-               cmp_ok( $damn->rank, '==', 42, "Got Correct rank for result object");   
-               cmp_ok( $formerly->rank, '==', 42, "Got Correct rank for result object");
                
                ## Create the expected children sub objects?
                ok( $crap->can('cds'), "Has cds relationship");
@@ -644,10 +615,25 @@ VOID_CONTEXT: {
                ok( $cd2->title eq "VOID_Yet More Tweeny-Pop crap", "Got Expected CD Title");
        }
 
+  WITH_COND_FROM_RS: {
+  
+    $restricted_art_rs->populate([
+      {
+        name => 'VOID More Manufactured Crap',
+      },
+    ]);
+
+    my $more_crap = $art_rs->search({
+      name => 'VOID More Manufactured Crap'
+    })->first;
+    
+    ## Did it use the condition in the resultset?
+    cmp_ok( $more_crap->rank, '==', 42, "Got Correct rank for result object");
+  } 
 }
 
 ARRAYREF_OF_ARRAYREF_STYLE: {
-  $restricted_art_rs->populate([
+  $art_rs->populate([
     [qw/artistid name/],
     [1000, 'A Formally Unknown Singer'],
     [1001, 'A singer that jumped the shark two albums ago'],
@@ -662,11 +648,9 @@ ARRAYREF_OF_ARRAYREF_STYLE: {
   is $jumped->name, 'A singer that jumped the shark two albums ago', 'Correct Name';
   is $cool->name, 'An actually cool singer.', 'Correct Name';
   
-  cmp_ok $unknown->rank, '==', 42, 'Correct Rank';
-  cmp_ok $jumped->rank, '==', 42, 'Correct Rank';
-  cmp_ok $cool->rank, '==', 42, 'Correct Rank';
+  #cmp_ok $cool->rank, '==', 42, 'Correct Rank';
   
-  my ($cooler, $lamer) = $restricted_art_rs->populate([
+  my ($cooler, $lamer) = $art_rs->populate([
     [qw/artistid name/],
     [1003, 'Cooler'],
     [1004, 'Lamer'],   
@@ -675,6 +659,33 @@ ARRAYREF_OF_ARRAYREF_STYLE: {
   is $cooler->name, 'Cooler', 'Correct Name';
   is $lamer->name, 'Lamer', 'Correct Name';  
 
-  cmp_ok $cooler->rank, '==', 42, 'Correct Rank';
-  cmp_ok $lamer->rank, '==', 42, 'Correct Rank';  
+  #cmp_ok $cooler->rank, '==', 42, 'Correct Rank';
+
+  ARRAY_CONTEXT_WITH_COND_FROM_RS: {
+  
+    my ($mega_lamer) = $restricted_art_rs->populate([
+      {
+        name => 'Mega Lamer',
+      },
+    ]);
+
+    ## Did it use the condition in the resultset?
+    cmp_ok( $mega_lamer->rank, '==', 42, "Got Correct rank for result object");
+  } 
+
+  VOID_CONTEXT_WITH_COND_FROM_RS: {
+  
+    $restricted_art_rs->populate([
+      {
+        name => 'VOID Mega Lamer',
+      },
+    ]);
+
+    my $mega_lamer = $art_rs->search({
+      name => 'VOID Mega Lamer'
+    })->first;
+    
+    ## Did it use the condition in the resultset?
+    cmp_ok( $mega_lamer->rank, '==', 42, "Got Correct rank for result object");
+  } 
 }