X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Controller-DBIC-API.git;a=blobdiff_plain;f=t%2Frpc%2Fcreate.t;fp=t%2Frpc%2Fcreate.t;h=a12e7668a45cb03fbc0eadcaf3b296c8b06b9b85;hp=f2757a3643be6820a3a2d37fae57510c49e1a919;hb=88b67dcdf3e0e7eec62209595a8a90f142da308d;hpb=167f91619e02db8320b61f428a1e09706e300bb4 diff --git a/t/rpc/create.t b/t/rpc/create.t index f2757a3..a12e766 100644 --- a/t/rpc/create.t +++ b/t/rpc/create.t @@ -78,6 +78,59 @@ my $producer_create_url = "$base/api/rpc/producer/create"; ); } +# test create of single related row +{ + my $test_data = $json->encode( + { name => 'Futuristic Artist', cds => { 'title' => 'snarky cd name', year => '3030' } } + ); + my $req = PUT($artist_create_url); + $req->content_type('text/x-json'); + $req->content_length( + do { use bytes; length($test_data) } + ); + $req->content($test_data); + $mech->request($req); + cmp_ok( $mech->status, '==', 200, 'request with single related row okay' ); + my $count = $schema->resultset('Artist') + ->search({ name => 'Futuristic Artist' }) + ->count; + ok( $count, 'record with related object created' ); + $count = $schema->resultset('Artist') + ->search_related('cds', { title => 'snarky cd name' }) + ->count; + ok( $count, "record's related object created" ); +} + +# test create of multiple related rows +{ + my $test_data = $json->encode( + { name => 'Futuristic Artist 2', + cds => [ + { 'title' => 'snarky cd name 2', year => '3030' }, + { 'title' => 'snarky cd name 3', year => '3030' }, + ] + } + ); + + my $req = PUT($artist_create_url); + $req->content_type('text/x-json'); + $req->content_length( + do { use bytes; length($test_data) } + ); + $req->content($test_data); + $mech->request($req); + cmp_ok( $mech->status, '==', 200, 'request with multiple related rows okay' ); + my $count = $schema->resultset('Artist') + ->search({ name => 'Futuristic Artist 2' }) + ->count; + ok( $count, 'record with related object created' ); + $count = $schema->resultset('Artist') + ->search_related('cds', { title => ['snarky cd name 2','snarky cd name 3'] }) + ->count; + ok( $count == 2, "record's related objects created" ) or explain diag $count; + +} + # test stash config handling { my $req = POST( @@ -125,4 +178,6 @@ my $producer_create_url = "$base/api/rpc/producer/create"; cmp_ok( $mech->status, '==', 400, 'invalid param value produces error' ); } +# test creating record with multiple related-rows + done_testing();