X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Controller-DBIC-API.git;a=blobdiff_plain;f=t%2Frest%2Fstashedclass.t;h=79dd174141c6bf0cc60c5f3ed06aa4fb42b2b872;hp=84abd26111a82b4e903ba6da1c6e5e73a4ae76c7;hb=bb73aedb99734f11a8419f93915b87faf33ac1bf;hpb=07b00970f381c386ff40e4f13d5ab3c8bcf72c43 diff --git a/t/rest/stashedclass.t b/t/rest/stashedclass.t index 84abd26..79dd174 100644 --- a/t/rest/stashedclass.t +++ b/t/rest/stashedclass.t @@ -11,10 +11,9 @@ use URI; use Test::More; use Test::WWW::Mechanize::Catalyst 'RestTest'; use HTTP::Request::Common; -use JSON; -use Data::Dumper; +use JSON::MaybeXS; -my $json = JSON->new->utf8; +my $json = JSON::MaybeXS->new(utf8 => 1); my $mech = Test::WWW::Mechanize::Catalyst->new; ok( my $schema = DBICTest->init_schema(), 'got schema' ); @@ -53,4 +52,32 @@ my $base_url = "$base/api/rest/stashedclass"; like($response->{messages}[0], qr/current_result_set.*does not pass the type constraint/, 'invalid class'); } + +{ + no warnings; + # stash->{class} should always win over $self->class + *Catalyst::Controller::DBIC::API::class = sub { 'RestTestDB::CD' }; + + my $class = 'RestTestDB::Artist'; + my $req = GET( "$base_url/$class", {}, 'Accept' => 'text/x-json'); + $mech->request($req); + cmp_ok( $mech->status, '==', '200', "status OK" ); + my $response = $json->decode( $mech->content ); + is($response->{success}, 'true', 'success'); + is(scalar( @{$response->{list}} ), 3, 'three results - artist'); +} + +{ + no warnings; + # stash->{class} not present, ->class should be returned + *Catalyst::Controller::DBIC::API::class = sub { 'RestTestDB::CD' }; + + my $req = GET( "$base_url/noclass", {}, 'Accept' => 'text/x-json'); + $mech->request($req); + cmp_ok( $mech->status, '==', '200', "status OK" ); + my $response = $json->decode( $mech->content ); + is($response->{success}, 'true', 'success'); + is(scalar( @{$response->{list}} ), 6, 'six results - cd'); +} + done_testing();