Fix a bug in the paginator where in 10/20 page links the number
of pages becomes less than 10/20. Add lots of Paginator tests to check this.
This commit is contained in:
parent
a8979545ef
commit
91ecdda498
3 changed files with 145 additions and 7 deletions
128
t/Paginator.t
128
t/Paginator.t
|
|
@ -20,15 +20,17 @@ use WebGUI::Paginator;
|
|||
use Test::More; # increment this value for each test you create
|
||||
use Test::Deep;
|
||||
use POSIX qw(ceil);
|
||||
use Storable qw/dclone/;
|
||||
use Data::Dumper;
|
||||
|
||||
my $session = WebGUI::Test->session;
|
||||
|
||||
plan tests => 26; # increment this value for each test you create
|
||||
|
||||
my $startingRowNum = 0;
|
||||
my $endingRowNum = 99;
|
||||
my @paginatingData = ($startingRowNum..$endingRowNum);
|
||||
|
||||
plan tests => 15; # increment this value for each test you create
|
||||
|
||||
my $rowCount = $endingRowNum - $startingRowNum + 1;
|
||||
my $NumberOfPages = ceil($rowCount/25); ##Default page size=25
|
||||
my $url = "/home";
|
||||
|
|
@ -47,7 +49,26 @@ cmp_bag([0..24], $p->getPageData(1), 'page 1 data correct');
|
|||
cmp_bag([25..49], $p->getPageData(2), 'page 2 data correct');
|
||||
cmp_bag([ ], $p->getPageData(5), 'page 5 data correct');
|
||||
|
||||
# Test getPageLinks
|
||||
########################################################################
|
||||
#
|
||||
# getPageNumber, setPageNumber
|
||||
#
|
||||
########################################################################
|
||||
|
||||
my $p2 = WebGUI::Paginator->new($session, '/work');
|
||||
|
||||
is($p2->getPageNumber, 1, 'pageNumber set to 1 at object creation by default');
|
||||
is($p2->setPageNumber(0), 0, 'setPageNumber returns the page number set');
|
||||
is($p2->getPageNumber, 0, 'pageNumber set by setPageNumber');
|
||||
is($p2->setPageNumber(3), 3, 'setPageNumber returns the page number set');
|
||||
is($p2->getPageNumber, 3, 'pageNumber set by setPageNumber');
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# getPageLinks
|
||||
#
|
||||
########################################################################
|
||||
|
||||
my $expectedPages;
|
||||
$expectedPages = [ map { +{
|
||||
'pagination.text' => ( $_ + 1 ),
|
||||
|
|
@ -63,7 +84,6 @@ cmp_deeply(
|
|||
'page links correct',
|
||||
);
|
||||
|
||||
|
||||
$startingRowNum = 0;
|
||||
$endingRowNum = 100;
|
||||
@paginatingData = ($startingRowNum..$endingRowNum);
|
||||
|
|
@ -78,7 +98,7 @@ $p->setDataByArrayRef(\@paginatingData);
|
|||
is($p->getRowCount, $rowCount, '(101) paginator returns correct number of rows');
|
||||
is($p->getNumberOfPages, $NumberOfPages, '(101) paginator returns right number of pages (default setting)');
|
||||
|
||||
my $page1Data = $p->getPageData(1);
|
||||
$page1Data = $p->getPageData(1);
|
||||
cmp_bag([0..24], $p->getPageData(1), '(101) page 1 data correct');
|
||||
cmp_bag([25..49], $p->getPageData(2), '(101) page 2 data correct');
|
||||
cmp_bag([100 ], $p->getPageData(5), '(101) page 5 data correct');
|
||||
|
|
@ -95,11 +115,105 @@ $expectedPages = [ map { +{
|
|||
|
||||
$expectedPages->[0]->{'pagination.activePage'} = 'true';
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# getPageLinks with limits
|
||||
#
|
||||
########################################################################
|
||||
|
||||
# Test getPageLinks
|
||||
cmp_deeply(
|
||||
($p->getPageLinks)[0],
|
||||
$expectedPages,
|
||||
'page links correct',
|
||||
'set of 5 pages looks right',
|
||||
);
|
||||
|
||||
$startingRowNum = 0;
|
||||
$endingRowNum = 199;
|
||||
@paginatingData = ($startingRowNum..$endingRowNum);
|
||||
|
||||
|
||||
$p = WebGUI::Paginator->new($session, '/home', 10);
|
||||
|
||||
$rowCount = $endingRowNum - $startingRowNum + 1;
|
||||
$NumberOfPages = ceil($rowCount/10); ##Default page size=25
|
||||
|
||||
$p->setDataByArrayRef(\@paginatingData);
|
||||
|
||||
$expectedPages = [ map { +{
|
||||
'pagination.text' => ( $_ + 1 ),
|
||||
'pagination.range' => ( 10 * $_ + 1 ) . "-" . ( $_ * 10 + 10 <= $endingRowNum + 1 ? $_ * 10 + 10 : $endingRowNum + 1 ), # First row number - Last row number
|
||||
'pagination.url' => ( '/home?pn=' . ( $_ + 1 ) ), # Current page has no URL
|
||||
} } (0..$NumberOfPages-1) ];
|
||||
|
||||
|
||||
my $copy;
|
||||
$copy = dclone($expectedPages);
|
||||
$copy->[0]->{'pagination.activePage'} = 'true';
|
||||
$copy->[0]->{'pagination.url'} = '';
|
||||
|
||||
cmp_deeply(
|
||||
($p->getPageLinks)[0],
|
||||
$copy,
|
||||
'set of 20 pages looks right',
|
||||
);
|
||||
|
||||
my @pageWindow;
|
||||
$copy = dclone($expectedPages);
|
||||
$copy->[0]->{'pagination.activePage'} = 'true';
|
||||
$copy->[0]->{'pagination.url'} = '';
|
||||
@pageWindow = @{ $copy }[0..9];
|
||||
|
||||
cmp_deeply(
|
||||
($p->getPageLinks(10))[0],
|
||||
\@pageWindow,
|
||||
'set of first 10 pages selected correctly',
|
||||
);
|
||||
|
||||
$p->setPageNumber(10);
|
||||
my $copy = dclone($expectedPages);
|
||||
$copy->[9]->{'pagination.activePage'} = 'true';
|
||||
$copy->[9]->{'pagination.url'} = '';
|
||||
@pageWindow = @{ $copy }[4..13];
|
||||
|
||||
cmp_deeply(
|
||||
($p->getPageLinks(10))[0],
|
||||
\@pageWindow,
|
||||
'set of middle 10 pages @10 selected correctly',
|
||||
);
|
||||
|
||||
$p->setPageNumber(3);
|
||||
my $copy = dclone($expectedPages);
|
||||
$copy->[2]->{'pagination.activePage'} = 'true';
|
||||
$copy->[2]->{'pagination.url'} = '';
|
||||
delete $copy->[0]->{'pagination.activePage'};
|
||||
@pageWindow = @{ $copy }[0..9];
|
||||
|
||||
cmp_deeply(
|
||||
($p->getPageLinks(10))[0],
|
||||
\@pageWindow,
|
||||
'set of 10 pages selected correctly, with off edge page number (3/20)',
|
||||
);
|
||||
|
||||
$p->setPageNumber(17);
|
||||
my $copy = dclone($expectedPages);
|
||||
$copy->[16]->{'pagination.activePage'} = 'true';
|
||||
$copy->[16]->{'pagination.url'} = '';
|
||||
@pageWindow = @{ $copy }[10..19];
|
||||
|
||||
cmp_deeply(
|
||||
($p->getPageLinks(10))[0],
|
||||
\@pageWindow,
|
||||
'set of last 10 pages selected correctly, (17/20)',
|
||||
);
|
||||
|
||||
$p->setPageNumber(20);
|
||||
my $copy = dclone($expectedPages);
|
||||
$copy->[19]->{'pagination.activePage'} = 'true';
|
||||
$copy->[19]->{'pagination.url'} = '';
|
||||
@pageWindow = @{ $copy }[10..19];
|
||||
|
||||
cmp_deeply(
|
||||
($p->getPageLinks(10))[0],
|
||||
\@pageWindow,
|
||||
'set of last 10 pages selected correctly, (20/20)',
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue