Make test suite pass under DBICTEST_SQLITE_USE_FILE=1
[dbsrgits/DBIx-Class.git] / t / 93single_accessor_object.t
index 8c2db94..e250183 100644 (file)
@@ -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({
@@ -40,3 +38,24 @@ plan tests => 7;
   $track->update({ disc => $another_cd });
   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;