X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Frest%2Fitem.t;h=dbc5e60b61aff38a6d29b3702916ddbd9dedef72;hb=8c7199a13b832b6ce5e569320b3620dd38a67617;hp=29d2f1e066579ea989890676650c916086277406;hpb=b30bd741360ecf26a6481c2080802c9f4ebe2a55;p=catagits%2FCatalyst-Controller-DBIC-API.git diff --git a/t/rest/item.t b/t/rest/item.t index 29d2f1e..dbc5e60 100644 --- a/t/rest/item.t +++ b/t/rest/item.t @@ -1,5 +1,3 @@ -use 5.6.0; - use strict; use warnings; @@ -13,43 +11,76 @@ use URI; use Test::More; use Test::WWW::Mechanize::Catalyst 'RestTest'; use HTTP::Request::Common; -use JSON::Any; +use JSON; + +my $json = JSON->new->utf8; my $mech = Test::WWW::Mechanize::Catalyst->new; -ok(my $schema = DBICTest->init_schema(), 'got schema'); +ok( my $schema = DBICTest->init_schema(), 'got schema' ); my $artist_view_url = "$base/api/rest/artist/"; { my $id = 1; - my $req = GET( $artist_view_url . $id, undef, 'Accept' => 'application/json' ); + my $req = + GET( $artist_view_url . $id, undef, 'Accept' => 'application/json' ); $mech->request($req); cmp_ok( $mech->status, '==', 200, 'open attempt okay' ); - my %expected_response = $schema->resultset('Artist')->find($id)->get_columns; - my $response = JSON::Any->Load( $mech->content); - is_deeply( $response, { data => \%expected_response, success => 'true' }, 'correct data returned' ); + my %expected_response = + $schema->resultset('Artist')->find($id)->get_columns; + my $response = $json->decode( $mech->content ); + is_deeply( + $response, + { data => \%expected_response, success => 'true' }, + 'correct data returned' + ); } { my $id = 5; - my $req = GET( $artist_view_url . $id, undef, 'Accept' => 'application/json' ); + my $req = + GET( $artist_view_url . $id, undef, 'Accept' => 'application/json' ); $mech->request($req); cmp_ok( $mech->status, '==', 400, 'open attempt not ok' ); - my $response = JSON::Any->Load( $mech->content); - is($response->{success}, 'false', 'not existing object fetch failed ok'); - like($response->{messages}->[0], qr/^No object found for id/, 'error message for not existing object fetch ok'); + my $response = $json->decode( $mech->content ); + is( $response->{success}, 'false', + 'not existing object fetch failed ok' ); + like( + $response->{messages}->[0], + qr/^No object found for id/, + 'error message for not existing object fetch ok' + ); } my $track_view_url = "$base/api/rest/track/"; { my $id = 9; - my $req = GET( $track_view_url . $id, undef, 'Accept' => 'application/json' ); + my $req = + GET( $track_view_url . $id, undef, 'Accept' => 'application/json' ); $mech->request($req); cmp_ok( $mech->status, '==', 200, 'got track with datetime object okay' ); - my %expected_response = $schema->resultset('Track')->find($id)->get_columns; - my $response = JSON::Any->Load( $mech->content); - is_deeply( $response, { data => \%expected_response, success => 'true' }, 'correct data returned for track with datetime' ); + my %expected_response = + $schema->resultset('Track')->find($id)->get_columns; + my $response = $json->decode( $mech->content ); + is_deeply( + $response, + { data => \%expected_response, success => 'true' }, + 'correct data returned for track with datetime' + ); +} + +{ + my $req = + GET( $artist_view_url . 'action_with_error', undef, 'Accept' => 'application/json' ); + $mech->request($req); + cmp_ok( $mech->status, '==', 404, 'action returned error 404' ); + my $response = $json->decode( $mech->content ); + is_deeply( + $response, + { success => 'false' }, + 'correct data returned' + ); } done_testing();