Created
April 20, 2013 11:48
-
-
Save issm/5425734 to your computer and use it in GitHub Desktop.
test of MyApp::Modell::Pagination
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use strict; | |
use warnings; | |
use MyApp; | |
use Test::More; | |
use Test::Exception; | |
my $c = MyApp->bootstrap(); | |
subtest 'no param' => sub { | |
dies_ok { | |
my $m = $c->model('Pagination'); | |
}; | |
}; | |
subtest 'simple' => sub { | |
lives_ok { | |
my %p = ( count => 10, entries => 5 ); | |
my $m = $c->model( 'Pagination' => \%p ); | |
isa_ok $m, 'MyApp::Model::Pagination'; | |
is $m->count, 10; | |
is $m->entries, 5; | |
is $m->page, 1; | |
}; | |
}; | |
subtest 'count:50, entries: 5' => sub { | |
my %p = ( count => 50, entries => 5 ); | |
my $m; | |
subtest 'page:1' => sub { | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->pages, 10; | |
is $m->entries_page, 5; | |
ok $m->has_next; | |
is $m->next, 2; | |
ok ! $m->has_prev; | |
is $m->first, 1; | |
is $m->last, 10; | |
}; | |
subtest 'page:2' => sub { | |
$p{page} = 2; | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->pages, 10; | |
is $m->entries_page, 5; | |
ok $m->has_next; | |
is $m->next, 3; | |
ok $m->has_prev; | |
is $m->prev, 1; | |
is $m->first, 1; | |
is $m->last, 10; | |
}; | |
subtest 'page:10' => sub { | |
$p{page} = 10; | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->pages, 10; | |
is $m->entries_page, 5; | |
ok ! $m->has_next; | |
ok $m->has_prev; | |
is $m->prev, 9; | |
is $m->first, 1; | |
is $m->last, 10; | |
}; | |
subtest 'page:11' => sub { | |
$p{page} = 11; | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->entries_page, 0; | |
ok ! $m->has_next; | |
ok $m->has_prev; | |
is $m->prev, 10; | |
}; | |
subtest 'page:15' => sub { | |
$p{page} = 15; | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->entries_page, 0; | |
ok ! $m->has_next; | |
ok $m->has_prev; | |
is $m->prev, 10; | |
}; | |
subtest 'page:0' => sub { | |
$p{page} = 0; | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->entries_page, 0; | |
ok $m->has_next; | |
is $m->next, 1; | |
ok ! $m->has_prev; | |
}; | |
subtest 'page:-5' => sub { | |
$p{page} = -5; | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->entries_page, 0; | |
ok $m->has_next; | |
is $m->next, 1; | |
ok ! $m->has_prev; | |
}; | |
}; | |
subtest 'count:10, entries: 4' => sub { | |
my %p = ( count => 10, entries => 4 ); | |
my $m; | |
subtest 'page:1' => sub { | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->pages, 3; | |
is $m->entries_page, 4; | |
ok $m->has_next; | |
is $m->next, 2; | |
ok ! $m->has_prev; | |
is $m->first, 1; | |
is $m->last, 3; | |
}; | |
subtest 'page:2' => sub { | |
$p{page} = 2; | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->pages, 3; | |
is $m->entries_page, 4; | |
ok $m->has_next; | |
is $m->next, 3; | |
ok $m->has_prev; | |
is $m->prev, 1; | |
is $m->first, 1; | |
is $m->last, 3; | |
}; | |
subtest 'page:3' => sub { | |
$p{page} = 3; | |
$m = $c->model( 'Pagination' => \%p ); | |
is $m->pages, 3; | |
is $m->entries_page, 2; | |
ok ! $m->has_next; | |
ok $m->has_prev; | |
is $m->prev, 2; | |
is $m->first, 1; | |
is $m->last, 3; | |
}; | |
}; | |
done_testing; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use strict; | |
use warnings; | |
use MyApp; | |
use Test::More; | |
use Test::Exception; | |
my $c = MyApp->bootstrap(); | |
my %p = ( count => 50, entries => 1 ); | |
sub model { | |
my (%p) = @_; | |
return $c->model( 'Pagination' => \%p ); | |
} | |
subtest 'array/arrayref' => sub { | |
my $m = model( %p ); | |
is $m->pages, 50; | |
subtest 'array' => sub { | |
my @a = $m->list_page(); | |
is_deeply \@a, [ 1 .. 50 ]; | |
}; | |
subtest 'arrayref' => sub { | |
my $a = $m->list_page(); | |
isa_ok $a, 'ARRAY'; | |
}; | |
}; | |
subtest 'no param' => sub { | |
subtest 'page:1' => sub { | |
my $m = model( %p, page => 1 ); | |
my @p = $m->list_page(); | |
is_deeply \@p, [ 1 .. 50 ]; | |
}; | |
subtest 'page:10' => sub { | |
my $m = model( %p, page => 10 ); | |
my @p = $m->list_page(); | |
is_deeply \@p, [ 1 .. 50 ]; | |
}; | |
subtest 'page:50' => sub { | |
my $m = model( %p, page => 50 ); | |
my @p = $m->list_page(); | |
is_deeply \@p, [ 1 .. 50 ]; | |
} | |
}; | |
subtest 'range' => sub { | |
my ($m, @p); | |
my $page; | |
subtest 'without first/last' => sub { | |
$page = 1; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 3 ); | |
is_deeply \@p, [ 1, 2, 3, 4, undef ]; | |
@p = $m->list_page( range => 5 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, undef ]; | |
}; | |
$page = 3; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 3 ); | |
is_deeply \@p, [1, 2, 3, 4, 5, 6, undef ]; | |
@p = $m->list_page( range => 5 ); | |
is_deeply \@p, [1, 2, 3, 4, 5, 6, 7, 8, undef ]; | |
}; | |
$page = 5; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 3 ); | |
is_deeply \@p, [undef, 2, 3, 4, 5, 6, 7, 8, undef ]; | |
@p = $m->list_page( range => 5 ); | |
is_deeply \@p, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, undef ]; | |
}; | |
$page = 10; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 3 ); | |
is_deeply \@p, [undef, 7, 8, 9, 10, 11, 12, 13, undef ]; | |
@p = $m->list_page( range => 5 ); | |
is_deeply \@p, [undef, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, undef ]; | |
}; | |
$page = 46; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 3 ); | |
is_deeply \@p, [undef, 43, 44, 45, 46, 47, 48, 49, undef ]; | |
@p = $m->list_page( range => 5 ); | |
is_deeply \@p, [undef, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
}; | |
$page = 48; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 3 ); | |
is_deeply \@p, [undef, 45, 46, 47, 48, 49, 50 ]; | |
@p = $m->list_page( range => 5 ); | |
is_deeply \@p, [undef, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
}; | |
$page = 50; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 3 ); | |
is_deeply \@p, [undef, 47, 48, 49, 50 ]; | |
@p = $m->list_page( range => 5 ); | |
is_deeply \@p, [undef, 45, 46, 47, 48, 49, 50 ]; | |
}; | |
}; | |
subtest 'with first/last' => sub { | |
$page = 1; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, undef ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, undef, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, undef, 50 ]; | |
}; | |
$page = 3; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, 7, 8, undef ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, 7, 8, undef, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, 7, 8, undef, 50 ]; | |
}; | |
$page = 6; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, undef ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, undef, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, undef, 50 ]; | |
}; | |
$page = 7; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, undef ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ undef, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, undef, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, undef, 50 ]; | |
}; | |
$page = 8; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, undef, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, undef ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ undef, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, undef, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, undef, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, undef, 50 ]; | |
}; | |
$page = 25; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, undef, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, undef ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ undef, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, undef, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, undef, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, undef, 50 ]; | |
}; | |
$page = 43; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, undef, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, undef ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ undef, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, undef, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, undef, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, undef, 50 ]; | |
}; | |
$page = 44; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, undef, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, undef ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ undef, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, undef, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
}; | |
$page = 45; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, undef, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ undef, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, undef, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
}; | |
$page = 48; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, undef, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ undef, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, undef, 43, 44, 45, 46, 47, 48, 49, 50 ]; | |
}; | |
$page = 50; | |
subtest "page:$page" => sub { | |
$m = model( %p, page => $page ); | |
@p = $m->list_page( range => 5, first => 1 ); | |
is_deeply \@p, [ 1, undef, 45, 46, 47, 48, 49, 50 ]; | |
@p = $m->list_page( range => 5, last => 1 ); | |
is_deeply \@p, [ undef, 45, 46, 47, 48, 49, 50 ]; | |
@p = $m->list_page( range => 5, first => 1, last => 1 ); | |
is_deeply \@p, [ 1, undef, 45, 46, 47, 48, 49, 50 ]; | |
}; | |
}; | |
}; | |
done_testing; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment