9 # Test various uses of passing an object to find, create, and update on a single
12 my $schema = DBICTest->init_schema();
13 my $artist = $schema->resultset("Artist")->find(1);
15 my $cd = $schema->resultset("CD")->find_or_create({
17 title => "Object on a might_have",
20 ok(defined $cd, 'created a CD');
21 is($cd->get_column('artist'), $artist->id, 'artist matches CD');
23 my $liner_notes = $schema->resultset("LinerNotes")->find_or_create({
25 notes => "Creating using an object on a might_have is helpful.",
27 ok(defined $liner_notes, 'created liner notes');
28 is($liner_notes->liner_id, $cd->cdid, 'liner notes matches CD');
29 is($liner_notes->notes, "Creating using an object on a might_have is helpful.", 'liner notes are correct');
31 my $track = $cd->tracks->find_or_create({
33 title => 'Single Accessor'
35 is($track->get_column('cd'), $cd->cdid, 'track matches CD before update');
37 my $another_cd = $schema->resultset("CD")->find(5);
38 $track->update({ disc => $another_cd });
39 is($track->get_column('cd'), $another_cd->cdid, 'track matches another CD after update');
44 my $schema = DBICTest->init_schema();
45 my $artist = $schema->resultset('Artist')->create({ artistid => 666, name => 'bad religion' });
46 my $cd = $schema->resultset('CD')->create({ cdid => 187, artist => 1, title => 'how could hell be any worse?', year => 1982, genreid => undef });
48 ok(!defined($cd->get_column('genreid')), 'genreid is NULL'); #no accessor was defined for this column
49 ok(!defined($cd->genre), 'genre accessor returns undef');
53 my $schema = DBICTest->init_schema();
54 my $artist = $schema->resultset('Artist')->create({ artistid => 666, name => 'bad religion' });
55 my $genre = $schema->resultset('Genre')->create({ genreid => 88, name => 'disco' });
56 my $cd = $schema->resultset('CD')->create({ cdid => 187, artist => 1, title => 'how could hell be any worse?', year => 1982 });
58 dies_ok { $cd->genre } 'genre accessor throws without column';