From: Jess Robinson Date: Fri, 28 Sep 2007 07:51:40 +0000 (+0000) Subject: Tests from captainL, find_or_new_related fails on belongs_to rels. X-Git-Tag: v0.08010~62 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e02b9964c569e29ca13db1784d0c43097b2b7d52;p=dbsrgits%2FDBIx-Class.git Tests from captainL, find_or_new_related fails on belongs_to rels. --- diff --git a/t/66relationship.t b/t/66relationship.t index 73925d4..1711c30 100644 --- a/t/66relationship.t +++ b/t/66relationship.t @@ -7,7 +7,7 @@ use DBICTest; my $schema = DBICTest->init_schema(); -plan tests => 56; +plan tests => 58; # has_a test my $cd = $schema->resultset("CD")->find(4); @@ -90,6 +90,7 @@ $cd = $artist->find_or_create_related( 'cds', { year => 2006, } ); is( $cd->title, 'Greatest Hits', 'find_or_create_related new record ok' ); + @cds = $artist->search_related('cds'); is( ($artist->search_related('cds'))[4]->title, 'Greatest Hits', 'find_or_create_related new record search ok' ); @@ -109,6 +110,19 @@ $cd = $artist->find_or_new_related( 'cds', { is( $cd->title, 'Greatest Hits 2: Louder Than Ever', 'find_or_new_related new record ok' ); ok( ! $cd->in_storage, 'find_or_new_related on a new record: not in_storage' ); +# print STDERR Data::Dumper::Dumper($cd->get_columns); +# $cd->result_source->schema->storage->debug(1); +$cd->artist(undef); +my $newartist = $cd->find_or_new_related( 'artist', { + name => 'Random Boy Band Two', + artistid => 200, +} ); +$cd->result_source->schema->storage->debug(0); + +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'); + + SKIP: { skip "relationship checking needs fixing", 1; # try to add a bogus relationship using the wrong cols diff --git a/t/96multi_create.t b/t/96multi_create.t index 810b6eb..9c5522b 100644 --- a/t/96multi_create.t +++ b/t/96multi_create.t @@ -161,3 +161,20 @@ SPECIAL_CASE2: { is($a->name, 'Pink Floyd', 'Artist insertion ok'); is($a->cds && $a->cds->first->title, 'The Wall', 'CD insertion ok'); } + +## Create foreign key col obj including PK +## See test 20 in 66relationships.t +my $new_cd_hashref = { + cdid => 27, + title => 'Boogie Woogie', + year => '2007', + artist => { artistid => 17, name => 'king luke' } + }; + +my $cd = $schema->resultset("CD")->find(1); + +print $cd->artist->id; +is($cd->artist->id, 1, 'rel okay'); + +my $new_cd = $schema->resultset("CD")->create($new_cd_hashref); +is($new_cd->artist->id, 17, 'new id retained okay'); \ No newline at end of file