App-AutoCRUD
view release on metacpan or search on metacpan
t/00_autocrud.t view on Meta::CPAN
# homepage
my $res = $cb->(GET "/home");
like $res->content, qr/AutoCRUD demo application/, "Title from config";
like $res->content, qr/Chinook/, "Home contains Chinook datasource";
# schema page
$res = $cb->(GET "/Chinook/schema/tablegroups");
like $res->content, qr/Artist/, "Artist listed";
like $res->content, qr/Album/, "Album listed";
like $res->content, qr/Track/, "Track listed";
unlike $res->content, qr/Invoice/i, "no table starts with 'i'";
unlike $res->content, qr/Customer/i, "exclude table ending in 'mer'";
# table description
$res = $cb->(GET "/Chinook/table/MediaType/descr");
like $res->content, qr(INTEGER\s+NOT\s+NULL), "MediaTypeId datatype";
# search form (display)
$res = $cb->(GET "/Chinook/table/MediaType/search");
like $res->content, qr(<span class="TN_label colname pk">MediaTypeId</span>),
"MediaTypeId present, pk detected";
# search form (POST)
$res = $cb->(POST "/Chinook/table/MediaType/search");
is $res->code, 303, "redirecting POST search";
like $res->header('location'), qr/^list\?/, "redirecting to 'list'";
# list
$res = $cb->(GET "/Chinook/table/MediaType/list?");
like $res->content, qr(records 1 - 5), "found 5 records";
like $res->content, qr(MPEG), "found MPEG";
like $res->content, qr(AAC), "found AAC";
$res = $cb->(GET "/Chinook/table/MediaType/list?Name=*MPEG*");
like $res->content, qr(LIKE \?), "SQL LIKE";
like $res->content, qr(records 1 - 2), "found 2 records";
like $res->content, qr(Protected MPEG), "found Protected MPEG";
# id
$res = $cb->(GET "/Chinook/table/Album/id/1");
like $res->content, qr(Album/update[^"]*">), "update link";
$res = $cb->(GET "/Chinook/table/Album/id/1.yaml");
like $res->content, qr(AlbumId:\s*1), "yaml view";
$res = $cb->(GET "/Chinook/table/Album/id/1.json");
like $res->content, qr("AlbumId"\s*:\s*1), "json view";
$res = $cb->(GET "/Chinook/table/Album/id/1.xml");
like $res->content, qr(<row[^>]*AlbumId="1"), "xml view";
# TODO : test list outputs as xlsx,
# test an update with special and accented characters
my $new_title = q{il était une "bergère"};
utf8::upgrade($new_title);
$res = $cb->(POST "/Chinook/table/Album/update",
{'where.AlbumId' => 1, 'set.Title' => $new_title});
$res = $cb->(GET "/Chinook/table/Album/id/1.json");
my $data = $json_obj->decode($res->content);
is($data->{row}{Title}, $new_title, "updated title");
# update without a -where clause
$res = $cb->(POST "/Chinook/table/Album/update", {'set.Title' => 'foobar'});
is $res->code, 500;
like $res->content, qr(without any '-where'), "update without -where";
# update with an empty -where clause
$res = $cb->(POST "/Chinook/table/Album/update", {'set.Title' => 'foobar',
'where.AlbumId' => ""});
is $res->code, 500;
like $res->content, qr(without any '-where'), "update with empty -where";
# delete without a -where clause
$res = $cb->(POST "/Chinook/table/Album/delete");
is $res->code, 500;
like $res->content, qr(without any '-where'), "delete without -where";
# delete with an empty -where clause
$res = $cb->(POST "/Chinook/table/Album/delete", {'where.AlbumId' => ""});
is $res->code, 500;
like $res->content, qr(without any '-where'), "delete with empty -where";
# TODO : test descr, update, insert, delete
};
# signal end of tests
done_testing;
( run in 2.297 seconds using v1.01-cache-2.11-cpan-0d23b851a93 )