From: Peter Rabbitson Date: Sun, 23 Nov 2008 12:51:20 +0000 (+0000) Subject: The final (for now) part of the saga - castaway's real failing test X-Git-Tag: v0.08240~96^2~11^2~3 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=3424e5e81a24675b9c41705f12a17158751dba56;p=dbsrgits%2FDBIx-Class.git The final (for now) part of the saga - castaway's real failing test --- diff --git a/t/96multi_create.t b/t/96multi_create.t index e59ce79..a393ccd 100644 --- a/t/96multi_create.t +++ b/t/96multi_create.t @@ -6,7 +6,7 @@ use Test::Exception; use lib qw(t/lib); use DBICTest; -plan tests => 97; +plan tests => 104; my $schema = DBICTest->init_schema(); @@ -277,7 +277,6 @@ eval { 'Images named correctly in objects', ); - my $artwork = $schema->resultset('Artwork')->search ( { 'cd.title' => 'Music to code by at twilight' }, { join => 'cd' }, @@ -339,6 +338,55 @@ eval { }; diag $@ if $@; +# test a multilevel might-have with a PK == FK in the might_have/has_many table +# +# CD -> might have -> Artwork +# \ +# \-> has_many \ +# --> Artwork_to_Artist +# /-> has_many / +# / +# Artist +eval { + my $someartist = $schema->resultset('Artist')->first; + my $cd = $schema->resultset('CD')->create ({ + artist => $someartist, + title => 'Music to code by until the cows come home', + year => 2008, + artwork => { + artwork_to_artist => [ + { artist => { name => 'cowboy joe' } }, + { artist => { name => 'billy the kid' } }, + ], + }, + }); + + isa_ok ($cd, 'DBICTest::CD', 'Main CD object created'); + is ($cd->title, 'Music to code by until the cows come home', 'Correct CD title'); + + my $art_obj = $cd->artwork; + ok ($art_obj->has_column_loaded ('cd_id'), 'PK/FK present on artwork object'); + is ($art_obj->artists->count, 2, 'Correct artwork creator count via the new object'); + is_deeply ( + [ sort $art_obj->artists->get_column ('name')->all ], + [ 'billy the kid', 'cowboy joe' ], + 'Artists named correctly when queried via object', + ); + + my $artwork = $schema->resultset('Artwork')->search ( + { 'cd.title' => 'Music to code by until the cows come home' }, + { join => 'cd' }, + )->single; + is ($artwork->artists->count, 2, 'Correct artwork creator count via a new search'); + is_deeply ( + [ sort $artwork->artists->get_column ('name')->all ], + [ 'billy the kid', 'cowboy joe' ], + 'Artists named correctly queried via a new search', + ); +}; +diag $@ if $@; + + # nested find_or_create eval { my $newartist2 = $schema->resultset('Artist')->find_or_create({