X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F93single_accessor_object.t;h=e250183ad3576984a169e67255b5c008c2e884da;hb=d9c17594ab3be0b866c555750cdbd1ad6a1b34e6;hp=6423c03bb2a582e9874c18ef74e7fd11e2b41df7;hpb=bc1b7747844a1afc6760aac03776a99dcd333bee;p=dbsrgits%2FDBIx-Class.git diff --git a/t/93single_accessor_object.t b/t/93single_accessor_object.t index 6423c03..e250183 100644 --- a/t/93single_accessor_object.t +++ b/t/93single_accessor_object.t @@ -2,16 +2,14 @@ use strict; use warnings; use Test::More; +use Test::Exception; use lib qw(t/lib); use DBICTest; -my $schema = DBICTest->init_schema(); - -plan tests => 7; - # Test various uses of passing an object to find, create, and update on a single # rel accessor { + my $schema = DBICTest->init_schema(); my $artist = $schema->resultset("Artist")->find(1); my $cd = $schema->resultset("CD")->find_or_create({ @@ -23,20 +21,41 @@ plan tests => 7; is($cd->get_column('artist'), $artist->id, 'artist matches CD'); my $liner_notes = $schema->resultset("LinerNotes")->find_or_create({ - liner_id => $cd, - notes => "Creating using an object on a might_have is helpful.", + cd => $cd, + notes => "Creating using an object on a might_have is helpful.", }); ok(defined $liner_notes, 'created liner notes'); is($liner_notes->liner_id, $cd->cdid, 'liner notes matches CD'); is($liner_notes->notes, "Creating using an object on a might_have is helpful.", 'liner notes are correct'); my $track = $cd->tracks->find_or_create({ - position => 1, + position => 127, title => 'Single Accessor' }); is($track->get_column('cd'), $cd->cdid, 'track matches CD before update'); my $another_cd = $schema->resultset("CD")->find(5); $track->update({ disc => $another_cd }); - is($track->cdid, $another_cd->cdid, 'track matches another CD after update'); + is($track->get_column('cd'), $another_cd->cdid, 'track matches another CD after update'); +} + + +{ + my $schema = DBICTest->init_schema(); + my $artist = $schema->resultset('Artist')->create({ artistid => 666, name => 'bad religion' }); + my $cd = $schema->resultset('CD')->create({ cdid => 187, artist => 1, title => 'how could hell be any worse?', year => 1982, genreid => undef }); + + ok(!defined($cd->get_column('genreid')), 'genreid is NULL'); #no accessor was defined for this column + ok(!defined($cd->genre), 'genre accessor returns undef'); +} + +{ + my $schema = DBICTest->init_schema(); + my $artist = $schema->resultset('Artist')->create({ artistid => 666, name => 'bad religion' }); + my $genre = $schema->resultset('Genre')->create({ genreid => 88, name => 'disco' }); + my $cd = $schema->resultset('CD')->create({ cdid => 187, artist => 1, title => 'how could hell be any worse?', year => 1982 }); + + dies_ok { $cd->genre } 'genre accessor throws without column'; } + +done_testing;