X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F66relationship.t;h=48fcb2af79779825cf35eeea6a190ee7cce17252;hb=121068ec48336496a7ba216517c8caff27ceb99a;hp=3b67e45e82d3261d91f53cca3a999eb527770998;hpb=d6df786a112879064165f4a0700f3a605789e2b4;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/66relationship.t b/t/66relationship.t index 3b67e45..48fcb2a 100644 --- a/t/66relationship.t +++ b/t/66relationship.t @@ -8,7 +8,7 @@ use DBICTest; my $schema = DBICTest->init_schema(); -plan tests => 69; +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 if $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]; @@ -138,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 @@ -275,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)");