Fix updates with multi-create syntax
[dbsrgits/DBIx-Class.git] / t / 96multi_create.t
CommitLineData
33dd4e80 1use strict;
af2d42c0 2use warnings;
33dd4e80 3
4use Test::More;
5use lib qw(t/lib);
6use DBICTest;
7
8my $schema = DBICTest->init_schema();
9
af2d42c0 10plan tests => 6;
33dd4e80 11
12my $cd2 = $schema->resultset('CD')->create({ artist =>
13 { name => 'Fred Bloggs' },
14 title => 'Some CD',
15 year => 1996
16 });
17
ac8e89d7 18is(ref $cd2->artist, 'DBICTest::Artist', 'Created CD and Artist object');
19is($cd2->artist->name, 'Fred Bloggs', 'Artist created correctly');
20
21my $artist = $schema->resultset('Artist')->create({ name => 'Fred 2',
22 cds => [
23 { title => 'Music to code by',
24 year => 2007,
25 },
26 ],
27 });
28is(ref $artist->cds->first, 'DBICTest::CD', 'Created Artist with CDs');
29is($artist->cds->first->title, 'Music to code by', 'CD created correctly');
af2d42c0 30
31# Add a new CD
32$artist->update({cds => [ $artist->cds,
33 { title => 'Yet another CD',
34 year => 2006,
35 },
36 ],
37 });
38is(($artist->cds->search({}, { order_by => 'year' }))[0]->title, 'Yet another CD', 'Updated and added another CD');
39
40my $newartist = $schema->resultset('Artist')->find_or_create({ name => 'Fred 2'});
41
42is($newartist->name, 'Fred 2', 'Retrieved the artist');
43
44my $newartist2 = $schema->resultset('Artist')->find_or_create({ name => 'Fred 3',
45 cds => [
46 { title => 'Noah Act',
47 year => 2007,
48 },
49 ],
50
51 });
52
53is($newartist2->name, 'Fred 3', 'Created new artist with cds via find_or_create');