#!/usr/bin/env perl
use strict;
use Test::More tests => 22;
BEGIN {
use lib qw( ../../CatalystX-CRUD/trunk/lib );
use_ok('CatalystX::CRUD::Model::RDBO');
use_ok('CatalystX::CRUD::Object::RDBO');
use_ok('Rose::DBx::TestDB');
use_ok('Rose::DB::Object');
}
use lib qw( t/lib );
use Catalyst::Test 'MyApp';
use Data::Dump qw( dump );
use HTTP::Request::Common;
diag( "testing against Catalyst-Runtime version "
. $Catalyst::Runtime::VERSION );
ok( my $res = request('/foo/test'), "get /foo/test" );
#dump $res->headers;
is( $res->headers->{status}, 200, "get 200" );
ok( $res = request('/foo/1/read'), "get /foo/1/read" );
is( $res->headers->{status}, 200, "get 200" );
ok( $res = request('/foo/1/bars/2/add'), "GET /foo/1/bars/2/add" );
is( $res->headers->{status}, 405, "cannot GET add related" );
# add a new foobar
ok( $res = request( POST( '/foo/1/bars/2/add', [] ) ),
"POST /foo/1/bars/2/add" );
is( $res->headers->{status}, 204, "POST add related OK" );
# remove an old foobar
ok( $res = request( POST( '/foo/1/bars/1/remove', [] ) ),
"POST /foo/1/bars/1/remove" );
is( $res->headers->{status}, 204, "POST remove related OK" );
ok( $res = request('/foo/search?id=1&cxc-order=id'),
"search id=1 with order" );
is_deeply(
eval $res->content,
{ limit => 50,
offset => 0,
plain_query => { id => [1] },
plain_query_str => "(id='1')",
query => [ "id", 1 ],
sort_by => "t1.id ASC",
sort_order => [ { id => "ASC" } ],
},
"search query with order dir assumed"
);
#dump $res;
ok( $res = request('/foo/search?id=1&cxc-sort=id&cxc-dir=desc'),
"search id=1 with sort/dir" );
#dump $res;
is_deeply(
eval $res->content,
{ limit => 50,
offset => 0,
plain_query => { id => [1] },
plain_query_str => "(id='1')",
query => [ "id", 1 ],
sort_by => "t1.id DESC",
sort_order => [ { id => "DESC" } ],
},
"search query with explicit order/dir"
);
ok( $res = request('/foo/search?id=1'), "search id=1 with no sort" );
is_deeply(
eval $res->content,
{ limit => 50,
offset => 0,
plain_query => { id => [1] },
plain_query_str => "(id='1')",
query => [ "id", 1 ],
sort_by => "t1.id DESC",
sort_order => [ { id => "DESC" } ],
},
"search query with default PK order"
);
# test multiple sort
ok( $res = request('/foo/search?id=1&cxc-order=id+desc+name+asc'),
"search id=1 with 2-column sort" );
#dump $res->content;
is_deeply(
eval $res->content,
{ limit => 50,
offset => 0,
plain_query => { id => [1] },
plain_query_str => "(id='1')",
query => [ "id", 1 ],
sort_by => "t1.id DESC, t1.name ASC",
sort_order => [ { id => "DESC" }, { name => "ASC" } ],
},
"multi-sort content"
);