Version 2.008001
[catagits/Catalyst-Controller-DBIC-API.git] / t / rest / stashedclass.t
CommitLineData
07b00970 1use strict;
2use warnings;
3
4use lib 't/lib';
5
6my $base = 'http://localhost';
7
8use RestTest;
9use DBICTest;
10use URI;
11use Test::More;
12use Test::WWW::Mechanize::Catalyst 'RestTest';
13use HTTP::Request::Common;
a5949bfd 14use JSON::MaybeXS;
07b00970 15
a5949bfd 16my $json = JSON::MaybeXS->new(utf8 => 1);
07b00970 17
18my $mech = Test::WWW::Mechanize::Catalyst->new;
19ok( my $schema = DBICTest->init_schema(), 'got schema' );
20
21my $base_url = "$base/api/rest/stashedclass";
22
23# test cd
24{
25 my $class = 'RestTestDB::CD';
26 my $req = GET( "$base_url/$class", {}, 'Accept' => 'text/x-json');
27 $mech->request($req);
28 cmp_ok( $mech->status, '==', '200', "status OK" );
29 my $response = $json->decode( $mech->content );
30 is($response->{success}, 'true', 'success');
31 is(scalar( @{$response->{list}} ), 6, 'six results');
32}
33
34# test author
35{
36 my $class = 'RestTestDB::Artist';
37 my $req = GET( "$base_url/$class", {}, 'Accept' => 'text/x-json');
38 $mech->request($req);
39 cmp_ok( $mech->status, '==', '200', "status OK" );
40 my $response = $json->decode( $mech->content );
41 is($response->{success}, 'true', 'success');
42 is(scalar( @{$response->{list}} ), 3, 'three results');
43}
44
45# test non-existent class
46{
47 my $class = 'Foo::Bar::Baz';
48 my $req = GET( "$base_url/$class", {}, 'Accept' => 'text/x-json');
49 $mech->request($req);
50 cmp_ok( $mech->status, '==', '400', "status 400" );
51 my $response = $json->decode( $mech->content );
52 like($response->{messages}[0], qr/current_result_set.*does not pass the type constraint/, 'invalid class');
53}
54
3649b790 55
56{
57 no warnings;
58 # stash->{class} should always win over $self->class
59 *Catalyst::Controller::DBIC::API::class = sub { 'RestTestDB::CD' };
60
61 my $class = 'RestTestDB::Artist';
62 my $req = GET( "$base_url/$class", {}, 'Accept' => 'text/x-json');
63 $mech->request($req);
64 cmp_ok( $mech->status, '==', '200', "status OK" );
65 my $response = $json->decode( $mech->content );
66 is($response->{success}, 'true', 'success');
67 is(scalar( @{$response->{list}} ), 3, 'three results - artist');
68}
69
70{
71 no warnings;
72 # stash->{class} not present, ->class should be returned
73 *Catalyst::Controller::DBIC::API::class = sub { 'RestTestDB::CD' };
74
75 my $req = GET( "$base_url/noclass", {}, 'Accept' => 'text/x-json');
76 $mech->request($req);
77 cmp_ok( $mech->status, '==', '200', "status OK" );
78 my $response = $json->decode( $mech->content );
79 is($response->{success}, 'true', 'success');
80 is(scalar( @{$response->{list}} ), 6, 'six results - cd');
81}
82
07b00970 83done_testing();