#------------------------------------------------------------------- # WebGUI is Copyright 2001-2008 Plain Black Corporation. #------------------------------------------------------------------- # Please read the legal notices (docs/legal.txt) and the license # (docs/license.txt) that came with this distribution before using # this software. #------------------------------------------------------------------- # http://www.plainblack.com info@plainblack.com #------------------------------------------------------------------- use FindBin; use strict; use lib "$FindBin::Bin/lib"; use WebGUI::Test; use WebGUI::Session; use WebGUI::Utility; use WebGUI::Paginator; use Test::More; # increment this value for each test you create use Test::Deep; use POSIX qw(ceil); my $session = WebGUI::Test->session; 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"; my $p = WebGUI::Paginator->new($session, $url); isa_ok($p, 'WebGUI::Paginator', 'paginator object returned'); $p->setDataByArrayRef(\@paginatingData); is($p->getRowCount, $rowCount, 'all data returned by paginator'); is($p->getNumberOfPages, $NumberOfPages, 'paginator returns right number of pages (default setting)'); my $page1Data = $p->getPageData(1); 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 cmp_deeply( [ map { +{ 'pagination.text' => ( $_ + 1 ), 'pagination.range' => ( 25 * $_ + 1 ) . "-" . ( $_ * 25 + 25 <= $endingRowNum + 1 ? $_ * 25 + 25 : $endingRowNum + 1 ), # First row number - Last row number 'pagination.url' => ( $_ != 0 ? $url . '?pn=' . ( $_ + 1 ) : '' ), # Current page has no URL } } (0..$NumberOfPages-1) ], ($p->getPageLinks)[0], 'page links correct', ); $startingRowNum = 0; $endingRowNum = 100; @paginatingData = ($startingRowNum..$endingRowNum); $rowCount = $endingRowNum - $startingRowNum + 1; $NumberOfPages = ceil($rowCount/25); ##Default page size=25 $p = WebGUI::Paginator->new($session, '/home'); $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); 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'); is('100', $p->getPage(5), '(101) page 5 stringification okay'); is($p->getPageNumber, 1, 'Default page number is 1'); ##Additional page numbers are specified at instantiation # Test getPageLinks cmp_deeply( ($p->getPageLinks)[0], [ map { +{ 'pagination.text' => ( $_ + 1 ), 'pagination.range' => ( 25 * $_ + 1 ) . "-" . ( $_ * 25 + 25 <= $endingRowNum + 1 ? $_ * 25 + 25 : $endingRowNum + 1 ), # First row number - Last row number 'pagination.url' => ( $_ != 0 ? $url . '?pn=' . ( $_ + 1 ) : '' ), # Current page has no URL } } (0..$NumberOfPages-1) ], 'page links correct', );