Dancer2-Plugin-ProgressStatus
view release on metacpan or search on metacpan
t/test-progress.t view on Meta::CPAN
############################################################################
## Test a simple progress bar
{
my $response1 = $app->request( GET '/test_progress_status_simple_with_no_args' );
ok( $response1->is_success, 'Response ok when setting and updating progress' );
my $response2 = $app->request( GET '/_progress_status/test' );
ok($response2->is_success, 'Get good response from progressstatus');
my $data = $json->decode($response2->decoded_content);
is($data->{total}, 100, 'Total is 100');
is($data->{count}, 2, 'Count matches total');
ok(!$data->{in_progress}, 'No longer in progress');
}
############################################################################
## Test a progress bar with args
{
my $response1 = $app->request( GET '/test_progress_status_with_args' );
ok( $response1->is_success, 'Success for less simple progress' );
my $response2 = $app->request( GET '/_progress_status/test2' );
my $data = $json->decode($response2->decoded_content);
is($data->{total}, 200, 'Total is 200');
is($data->{count}, 3, 'Count matches total');
is(scalar(@{$data->{messages}}), 2, 'Has two messages');
ok(!$data->{in_progress}, 'No longer in progress');
}
############################################################################
## Concurrency tests
{
my $response1 = $app->request( GET '/test_progress_status_good_concurrency' );
ok($response1->is_success, 'Two progress meters with the same name and same pid pass');
like($response1->content, qr/^Progress status test3 already exists/,
'two unfinished progress meters with the same name dies');
my $response2 = $app->request( GET '/_progress_status/test3' );
my $data = $json->decode($response2->decoded_content);
is($data->{total}, 200, 'Total is overriden');
}
{
## Test progress status with automatic ID
my $response1 = $app->request(GET '/test_progress_with_progress_id?progress_id=1000');
ok($response1->is_success, '200 response for progress with progress id');
my $response2 = $app->request(GET '/_progress_status/1000');
ok($response2->is_success, 'Get good response from progressstatus');
my $data = $json->decode($response2->decoded_content);
is($data->{total}, 100, 'Get a sensible response');
}
done_testing(17); # number of tests + Test::Warnings
( run in 0.590 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )