6 my $base = 'http://localhost';
12 use Test::WWW::Mechanize::Catalyst 'RestTest';
13 use HTTP::Request::Common;
17 my $json = JSON->new->utf8;
19 my $mech = Test::WWW::Mechanize::Catalyst->new;
20 ok( my $schema = DBICTest->init_schema(), 'got schema' );
22 my $base_url = "$base/api/rest/stashedclass";
26 my $class = 'RestTestDB::CD';
27 my $req = GET( "$base_url/$class", {}, 'Accept' => 'text/x-json');
29 cmp_ok( $mech->status, '==', '200', "status OK" );
30 my $response = $json->decode( $mech->content );
31 is($response->{success}, 'true', 'success');
32 is(scalar( @{$response->{list}} ), 6, 'six results');
37 my $class = 'RestTestDB::Artist';
38 my $req = GET( "$base_url/$class", {}, 'Accept' => 'text/x-json');
40 cmp_ok( $mech->status, '==', '200', "status OK" );
41 my $response = $json->decode( $mech->content );
42 is($response->{success}, 'true', 'success');
43 is(scalar( @{$response->{list}} ), 3, 'three results');
46 # test non-existent class
48 my $class = 'Foo::Bar::Baz';
49 my $req = GET( "$base_url/$class", {}, 'Accept' => 'text/x-json');
51 cmp_ok( $mech->status, '==', '400', "status 400" );
52 my $response = $json->decode( $mech->content );
53 like($response->{messages}[0], qr/current_result_set.*does not pass the type constraint/, 'invalid class');
59 # stash->{class} should always win over $self->class
60 *Catalyst::Controller::DBIC::API::class = sub { 'RestTestDB::CD' };
62 my $class = 'RestTestDB::Artist';
63 my $req = GET( "$base_url/$class", {}, 'Accept' => 'text/x-json');
65 cmp_ok( $mech->status, '==', '200', "status OK" );
66 my $response = $json->decode( $mech->content );
67 is($response->{success}, 'true', 'success');
68 is(scalar( @{$response->{list}} ), 3, 'three results - artist');
73 # stash->{class} not present, ->class should be returned
74 *Catalyst::Controller::DBIC::API::class = sub { 'RestTestDB::CD' };
76 my $req = GET( "$base_url/noclass", {}, 'Accept' => 'text/x-json');
78 cmp_ok( $mech->status, '==', '200', "status OK" );
79 my $response = $json->decode( $mech->content );
80 is($response->{success}, 'true', 'success');
81 is(scalar( @{$response->{list}} ), 6, 'six results - cd');