my
$db_file
=
"$Bin/lib/TestApp/testdbic.db"
;
unlink
$db_file
if
-e
$db_file
;
use_ok(
'TestApp::Schema'
);
my
$schema
;
lives_ok(
sub
{
$schema
= TestApp::Schema->
connect
(
"DBI:SQLite:$db_file"
) },
'Connect'
);
ok(
$schema
);
lives_ok(
sub
{
$schema
->deploy },
'deploy schema'
);
$schema
->resultset(
'Resource::Artist'
)->create({
id
=> 1,
name
=>
'davewood'
,
password
=>
'asdf'
,
});
my
$artist
=
$schema
->resultset(
'Resource::Artist'
)->create({
id
=> 2,
name
=>
'flipper'
,
password
=>
'asdf'
,
});
lives_ok(
sub
{
$artist
->albums->create({
id
=> 1,
name
=>
'Mach et einfach!'
}); },
'create album'
);
{
my
(
$res
,
$c
) = ctx_request(GET
'/'
);
for
my
$resource
(
qw/ Artist Concert Album Song /
) {
my
$controller
=
$c
->controller(
"Resource::$resource"
);
$controller
->redirect_mode(
'show'
);
}
}
{
my
$path
=
'/artists/create'
;
my
$res
= request(
$path
);
ok(
$res
->is_success,
"$path returns HTTP 200"
);
like(
$res
->decoded_content,
'/method="post"/'
,
"$path content contains 'method=\"post\"'"
);
$res
= request(POST
$path
, [
name
=>
'simit'
,
password
=>
'asdf'
,
password_repeat
=>
'asdf'
]);
ok(
$res
->is_redirect,
"$path returns HTTP 302"
);
my
$uri
= URI->new(
$res
->header(
'location'
));
is(
$uri
->path,
'/artists/3/show'
);
my
$cookie
=
$res
->header(
'Set-Cookie'
);
my
$content
= request(GET
$uri
->path,
Cookie
=>
$cookie
)->decoded_content;
like(
$content
,
'/3:simit/'
,
'resource has been created'
);
like(
$content
,
'/simit created/'
,
'check create success notification'
);
}
{
my
$path
=
'/artists/1/delete'
;
my
$res
= request(POST
$path
);
ok(
$res
->is_redirect,
"$path returns HTTP 302"
);
my
$uri
= URI->new(
$res
->header(
'location'
));
is(
$uri
->path,
'/artists/list'
);
my
$cookie
=
$res
->header(
'Set-Cookie'
);
my
$content
= request(GET
$uri
->path,
Cookie
=>
$cookie
)->decoded_content;
unlike(
$content
,
'/>davewood<\/a>/'
,
'resource has been deleted'
);
like(
$content
,
'/davewood deleted/'
,
'check delete success notification'
);
ok(request(POST
$path
)->code == 404,
"Already deleted $path returns HTTP 404"
);
}
{
my
$path
=
'/artists/2/edit'
;
my
$res
= request(
$path
);
ok(
$res
->is_success,
"$path returns HTTP 200"
);
like(
$res
->decoded_content,
'/method="post"/'
,
"$path content contains 'method=\"post\"'"
);
$res
= request(POST
$path
, [
name
=>
'foobar'
]);
ok(
$res
->is_redirect,
"$path returns HTTP 302"
);
my
$uri
= URI->new(
$res
->header(
'location'
));
is(
$uri
->path,
'/artists/2/show'
);
my
$cookie
=
$res
->header(
'Set-Cookie'
);
my
$content
= request(GET
$uri
->path,
Cookie
=>
$cookie
)->decoded_content;
like(
$content
,
'/foobar/'
,
'resource has been edited'
);
like(
$content
,
'/foobar updated/'
,
'check edit success notification'
);
}
{
my
$path
=
'/artists/2/albums/create'
;
my
$res
= request(
$path
);
ok(
$res
->is_success,
"$path returns HTTP 200"
);
like(
$res
->decoded_content,
'/method="post"/'
,
"$path content contains 'method=\"post\"'"
);
$res
= request(POST
$path
, [
name
=>
'I Brake Together'
]);
ok(
$res
->is_redirect,
"$path returns HTTP 302"
);
my
$uri
= URI->new(
$res
->header(
'location'
));
is(
$uri
->path,
'/artists/2/albums/2/show'
);
my
$cookie
=
$res
->header(
'Set-Cookie'
);
my
$content
= request(GET
$uri
->path,
Cookie
=>
$cookie
)->decoded_content;
like(
$content
,
'/2:I Brake Together/'
,
'resource has been created'
);
like(
$content
,
'/I Brake Together created/'
,
'check create success notification'
);
}
{
my
$path
=
'/artists/2/albums/2/edit'
;
my
$res
= request(
$path
);
ok(
$res
->is_success,
"$path returns HTTP 200"
);
like(
$res
->decoded_content,
'/method="post"/'
,
"$path content contains 'method=\"post\"'"
);
$res
= request(POST
$path
, [
name
=>
'Es gibt Reis, Baby'
]);
ok(
$res
->is_redirect,
"$path returns HTTP 302"
);
my
$uri
= URI->new(
$res
->header(
'location'
));
is(
$uri
->path,
'/artists/2/albums/2/show'
);
my
$cookie
=
$res
->header(
'Set-Cookie'
);
my
$content
= request(GET
$uri
->path,
Cookie
=>
$cookie
)->decoded_content;
like(
$content
,
'/2:Es gibt Reis, Baby/'
,
'resource has been edited'
);
like(
$content
,
'/Es gibt Reis, Baby updated/'
,
'check edit success notification'
);
}
{
my
$path
=
'/artists/2/albums/2/delete'
;
my
$res
= request(POST
$path
);
ok(
$res
->is_redirect,
"$path returns HTTP 302"
);
my
$uri
= URI->new(
$res
->header(
'location'
));
is(
$uri
->path,
'/artists/2/albums/list'
);
my
$cookie
=
$res
->header(
'Set-Cookie'
);
my
$content
= request(GET
$uri
->path,
Cookie
=>
$cookie
)->decoded_content;
unlike(
$content
,
'/show">Es gibt Reis, Baby/'
,
'resource has been deleted'
);
like(
$content
,
'/Es gibt Reis, Baby deleted/'
,
'check delete success notification'
);
ok(request(POST
$path
)->code == 404,
"Already deleted $path returns HTTP 404"
);
}
done_testing;