CatalystX-ExtJS-REST
view release on metacpan or search on metacpan
t/direct/api.t view on Meta::CPAN
use Test::More;
use strict;
use warnings;
use HTTP::Request::Common;
use JSON::XS qw(decode_json);
use lib qw(t/lib);
use Test::WWW::Mechanize::Catalyst 'MyApp';
my $mech = Test::WWW::Mechanize::Catalyst->new();
$mech->add_header( 'Content-type' => 'application/json' );
my $api = {
url => '/api/router',
type => 'remoting',
actions => {
REST => [
{ name => 'create', len => 2 },
{ name => 'destroy', len => 2 },
{ name => 'read', len => 2 },
{ name => 'submit', len => 0, formHandler => JSON::true },
{ name => 'update', len => 2 },
],
InlineUser => [
{ name => 'create', len => 1 },
{ name => 'destroy', len => 1 },
{ name => 'list', len => 1 },
{ name => 'read', len => 1 },
{ name => 'submit', len => 0, formHandler => JSON::true },
{ name => 'update', len => 1 },
],
User => [
{ name => 'create', len => 1 },
{ name => 'destroy', len => 1 },
{ name => 'list', len => 1 },
{ name => 'read', len => 1 },
{ name => 'submit', len => 0, formHandler => JSON::true },
{ name => 'update', len => 1 },
],
}
};
my $capi = MyApp->controller('API')->api;
map { @$_ = sort { $a->{name} cmp $b->{name} } @$_ } values %{$capi->{actions}};
is_deeply( $capi,
$api, 'get api directly from controller' );
$mech->get_ok( '/api', undef, 'get api via a request' );
ok( my $json = decode_json( $mech->content ), 'valid json' );
map { @$_ = sort { $a->{name} cmp $b->{name} } @$_ } values %{$json->{actions}};
is_deeply( $json, $api, 'expected api' );
my $lens = 0;
my $content = $mech->content;
$lens++ while( $content =~ /"len":(\d+)/g );
is($lens, 17 );
$mech->get_ok( '/api?namespace=MyApp', undef, 'get api via a request' );
ok( $json = decode_json( $mech->content ), 'valid json' );
( run in 1.112 second using v1.01-cache-2.11-cpan-13bb782fe5a )