X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F66relationship.t;h=31d28d4314b4b8d3eadfdb43a3a401e1905e8009;hb=f9dc732bf73b8913b9e37bf9963a57e61e3eb29f;hp=88f5c1610436c7c6507c599df89f113a42a32582;hpb=b3a9a1ac0bf01e7be5aae1966eef67f70a9dde55;p=dbsrgits%2FDBIx-Class.git diff --git a/t/66relationship.t b/t/66relationship.t index 88f5c16..31d28d4 100644 --- a/t/66relationship.t +++ b/t/66relationship.t @@ -8,7 +8,7 @@ use DBICTest; my $schema = DBICTest->init_schema(); -plan tests => 75; +plan tests => 74; # has_a test my $cd = $schema->resultset("CD")->find(4); @@ -35,10 +35,15 @@ is( $cds[1]->title, 'Forkful of bees', 'search_related with abstract query ok' ) if ($INC{'DBICTest/HelperRels.pm'}) { $artist->add_to_cds({ title => 'Big Flop', year => 2005 }); } else { - $artist->create_related( 'cds', { + my $big_flop = $artist->create_related( 'cds', { title => 'Big Flop', year => 2005, } ); + + SKIP:{ + skip "Can't fix right now", 1 unless $DBIx::Class::VERSION >= '0.09'; + lives_ok { $big_flop->genre} "Don't throw exception when col is not loaded after insert"; + }; } my $big_flop_cd = ($artist->search_related('cds'))[3]; @@ -92,12 +97,11 @@ TODO: { $track = $schema->resultset("Track")->create( { trackid => 2, cd => 3, - position => 99, title => 'Hidden Track 2' } ); $track->update_from_related( cd => $cd ); -my $t_cd = ($schema->resultset("Track")->search( cd => 4, position => 99 ))[0]->cd; +my $t_cd = ($schema->resultset("Track")->search( cd => 4, title => 'Hidden Track 2' ))[0]->cd; is( $t_cd->cdid, 4, 'update_from_related ok' ); @@ -139,6 +143,15 @@ my $newartist = $cd->find_or_new_related( 'artist', { is($newartist->name, 'Random Boy Band Two', 'find_or_new_related new artist record with id'); is($newartist->id, 200, 'find_or_new_related new artist id set'); +lives_ok( + sub { + my $new_bookmark = $schema->resultset("Bookmark")->new_result( {} ); + my $new_related_link = $new_bookmark->new_related( 'link', {} ); + }, + 'No back rel' +); + + TODO: { local $TODO = "relationship checking needs fixing"; # try to add a bogus relationship using the wrong cols @@ -276,3 +289,13 @@ cmp_ok($relinfo->{attrs}{is_foreign_key_constraint}, '==', 1, "is_foreign_key_co my $rs_overridden = $schema->source('ForceForeign'); my $relinfo_with_attr = $rs_overridden->relationship_info ('cd_3'); cmp_ok($relinfo_with_attr->{attrs}{is_foreign_key_constraint}, '==', 0, "is_foreign_key_constraint defined for belongs_to relationships with attr."); + +# check that relationships below left join relationships are forced to left joins +my $cds = $schema->resultset("CD")->search({ cdid => 1 }, { join => { genre => 'demographic' } }); +is($cds->count, 1, "subjoins under left joins force_left (string)"); + +$cds = $schema->resultset("CD")->search({ cdid => 1 }, { join => { genre => [ 'demographic' ] } }); +is($cds->count, 1, "subjoins under left joins force_left (arrayref)"); + +$cds = $schema->resultset("CD")->search({ cdid => 1 }, { join => { genre => { demographic => {} } } }); +is($cds->count, 1, "subjoins under left joins force_left (hashref)");