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 )