--- /dev/null
+use strict;
+use warnings;
+
+use Test::More;
+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 $artist = $schema->resultset("Artist")->find(1);
+
+ my $cd = $schema->resultset("CD")->find_or_create({
+ artist => $artist,
+ title => "Object on a might_have",
+ year => 2006,
+ });
+ ok(defined $cd, 'created a CD');
+ 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.",
+ });
+ 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,
+ 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');
+}