X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F101populate_rs.t;h=52aa332a921cdd59e6123879c20b7c8da05755f4;hb=7ec05166b27846f53340b708fb17b5898293ea30;hp=d849780923fc56adc9791a9a9c04ca470507ff12;hpb=af9283323554a3a49b1920d8d6862ed99b227363;p=dbsrgits%2FDBIx-Class.git diff --git a/t/101populate_rs.t b/t/101populate_rs.t index d849780..52aa332 100644 --- a/t/101populate_rs.t +++ b/t/101populate_rs.t @@ -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"); + } }