X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fmulti_create%2Fstandard.t;h=6c1efd816577afbf98c7c8d42301defbb756528d;hb=e24b5f64b2e8cd3fc745a603a2bacce3aef3e66a;hp=57993cf552e20a485f58f9129aaeb5535c6e6ccc;hpb=22b3008f3ba57b18e744e6ed1a198d71eb69ebd1;p=dbsrgits%2FDBIx-Class.git diff --git a/t/multi_create/standard.t b/t/multi_create/standard.t index 57993cf..6c1efd8 100644 --- a/t/multi_create/standard.t +++ b/t/multi_create/standard.t @@ -12,8 +12,8 @@ my $schema = DBICTest->init_schema(); lives_ok ( sub { my $cd = $schema->resultset('CD')->create({ - artist => { - name => 'Fred Bloggs' + artist => { + name => 'Fred Bloggs' }, title => 'Some CD', year => 1996 @@ -72,7 +72,7 @@ throws_ok ( ], }); }, - qr/Recursive update is not supported over relationships of type multi/, + qr/Recursive update is not supported over relationships of type 'multi'/, 'create via update of multi relationships throws an exception' ); @@ -112,7 +112,7 @@ lives_ok ( sub { # / # Producer lives_ok ( sub { - my $artist = $schema->resultset('Artist')->first; + my $artist = $schema->resultset('Artist')->find(1); my $cd = $schema->resultset('CD')->create ({ artist => $artist, title => 'Music to code by at night', @@ -152,7 +152,7 @@ lives_ok ( sub { is ($cd->title, 'Music to code by at night', 'Correct CD title'); is ($cd->tracks->count, 2, 'Two tracks on main CD'); - my ($t1, $t2) = $cd->tracks->all; + my ($t1, $t2) = sort { $a->id <=> $b->id } $cd->tracks->all; is ($t1->title, 'Off by one again', 'Correct 1st track name'); is ($t1->cd_single, undef, 'No single for 1st track'); is ($t2->title, 'The dereferencer', 'Correct 2nd track name'); @@ -316,10 +316,10 @@ lives_ok ( sub { }, 'Test might_have again but with just a PK and FK (neither specified) in the mid-table'); lives_ok ( sub { - my $newartist2 = $schema->resultset('Artist')->find_or_create({ + my $newartist2 = $schema->resultset('Artist')->find_or_create({ name => 'Fred 3', cds => [ - { + { title => 'Noah Act', year => 2007, }, @@ -329,60 +329,60 @@ lives_ok ( sub { }, 'Nested find_or_create'); lives_ok ( sub { - my $artist = $schema->resultset('Artist')->first; - - my $cd_result = $artist->create_related('cds', { - - title => 'TestOneCD1', - year => 2007, - tracks => [ - { title => 'TrackOne' }, - { title => 'TrackTwo' }, - ], - - }); - - isa_ok( $cd_result, 'DBICTest::CD', "Got Good CD Class"); - ok( $cd_result->title eq "TestOneCD1", "Got Expected Title"); - - my $tracks = $cd_result->tracks; - - isa_ok( $tracks, 'DBIx::Class::ResultSet', 'Got Expected Tracks ResultSet'); - - foreach my $track ($tracks->all) - { - isa_ok( $track, 'DBICTest::Track', 'Got Expected Track Class'); - } + my $artist = $schema->resultset('Artist')->first; + + my $cd_result = $artist->create_related('cds', { + + title => 'TestOneCD1', + year => 2007, + tracks => [ + { title => 'TrackOne' }, + { title => 'TrackTwo' }, + ], + + }); + + isa_ok( $cd_result, 'DBICTest::CD', "Got Good CD Class"); + ok( $cd_result->title eq "TestOneCD1", "Got Expected Title"); + + my $tracks = $cd_result->tracks; + + isa_ok( $tracks, 'DBIx::Class::ResultSet', 'Got Expected Tracks ResultSet'); + + foreach my $track ($tracks->all) + { + isa_ok( $track, 'DBICTest::Track', 'Got Expected Track Class'); + } }, 'First create_related pass'); lives_ok ( sub { - my $artist = $schema->resultset('Artist')->first; - - my $cd_result = $artist->create_related('cds', { - - title => 'TestOneCD2', - year => 2007, - tracks => [ - { title => 'TrackOne' }, - { title => 'TrackTwo' }, - ], + my $artist = $schema->resultset('Artist')->first; + + my $cd_result = $artist->create_related('cds', { + + title => 'TestOneCD2', + year => 2007, + tracks => [ + { title => 'TrackOne' }, + { title => 'TrackTwo' }, + ], liner_notes => { notes => 'I can haz liner notes?' }, - }); - - isa_ok( $cd_result, 'DBICTest::CD', "Got Good CD Class"); - ok( $cd_result->title eq "TestOneCD2", "Got Expected Title"); + }); + + isa_ok( $cd_result, 'DBICTest::CD', "Got Good CD Class"); + ok( $cd_result->title eq "TestOneCD2", "Got Expected Title"); ok( $cd_result->notes eq 'I can haz liner notes?', 'Liner notes'); - - my $tracks = $cd_result->tracks; - - isa_ok( $tracks, 'DBIx::Class::ResultSet', "Got Expected Tracks ResultSet"); - - foreach my $track ($tracks->all) - { - isa_ok( $track, 'DBICTest::Track', 'Got Expected Track Class'); - } + + my $tracks = $cd_result->tracks; + + isa_ok( $tracks, 'DBIx::Class::ResultSet', "Got Expected Tracks ResultSet"); + + foreach my $track ($tracks->all) + { + isa_ok( $track, 'DBICTest::Track', 'Got Expected Track Class'); + } }, 'second create_related with same arguments'); lives_ok ( sub { @@ -405,20 +405,20 @@ lives_ok ( sub { $schema->resultset('Artist')->populate([ $kurt_cobain ]); # %) - $a = $schema->resultset('Artist')->find({name => 'Kurt Cobain'}); + my $artist = $schema->resultset('Artist')->find({name => 'Kurt Cobain'}); - is($a->name, 'Kurt Cobain', 'Artist insertion ok'); - is($a->cds && $a->cds->first && $a->cds->first->title, - 'In Utero', 'CD insertion ok'); + is($artist->name, 'Kurt Cobain', 'Artist insertion ok'); + is($artist->cds && $artist->cds->first && $artist->cds->first->title, + 'In Utero', 'CD insertion ok'); }, 'populate'); ## Create foreign key col obj including PK ## See test 20 in 66relationships.t lives_ok ( sub { - my $new_cd_hashref = { - cdid => 27, - title => 'Boogie Woogie', - year => '2007', + my $new_cd_hashref = { + cdid => 27, + title => 'Boogie Woogie', + year => '2007', artist => { artistid => 17, name => 'king luke' } }; @@ -431,10 +431,10 @@ lives_ok ( sub { }, 'Create foreign key col obj including PK'); lives_ok ( sub { - $schema->resultset("CD")->create({ - cdid => 28, - title => 'Boogie Wiggle', - year => '2007', + $schema->resultset("CD")->create({ + cdid => 28, + title => 'Boogie Wiggle', + year => '2007', artist => { artistid => 18, name => 'larry' } }); }, 'new cd created without clash on related artist'); @@ -444,7 +444,11 @@ throws_ok ( sub { #$t->cd($t->new_related('cd', { artist => undef } ) ); #$t->{_rel_in_storage} = 0; $t->insert; -}, qr/cd.artist may not be NULL/, "Exception propogated properly"); +}, qr/DBI Exception.+(?x: + \QNOT NULL constraint failed: cd.artist\E + | + \Qcd.artist may not be NULL\E +)/s, "Exception propogated properly"); lives_ok ( sub { $schema->resultset('CD')->create ({