| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891 |
- <?php
- /**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category Zend
- * @package Zend_Paginator
- * @subpackage UnitTests
- * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- * @version $Id$
- */
- // Call Zend_PaginatorTest::main() if this source file is executed directly.
- if (!defined('PHPUnit_MAIN_METHOD')) {
- define('PHPUnit_MAIN_METHOD', 'Zend_PaginatorTest::main');
- }
- /**
- * Test helper
- */
- require_once dirname(__FILE__) . '/../TestHelper.php';
- /**
- * @see Zend_Paginator
- */
- require_once 'Zend/Paginator.php';
- /**
- * @see PHPUnit_Framework_TestCase
- */
- require_once 'PHPUnit/Framework/TestCase.php';
- /**
- * @see Zend_Config_Xml
- */
- require_once 'Zend/Config/Xml.php';
- /**
- * @see Zend_Db_Adapter_Pdo_Sqlite
- */
- require_once 'Zend/Db/Adapter/Pdo/Sqlite.php';
- /**
- * @see Zend_View
- */
- require_once 'Zend/View.php';
- /**
- * @see Zend_Controller_Action_HelperBroker
- */
- require_once 'Zend/Controller/Action/HelperBroker.php';
- /**
- * @see Zend_View_Helper_PaginationControl
- */
- require_once 'Zend/View/Helper/PaginationControl.php';
- /**
- * @see Zf4207
- */
- require_once 'Zend/Paginator/_files/Zf4207.php';
- /**
- * @see TestTable
- */
- require_once 'Zend/Paginator/_files/TestTable.php';
- /**
- * @see Zend_Cache
- */
- require_once 'Zend/Cache.php';
- /**
- * @see Zend_Filter_Callback
- */
- require_once 'Zend/Filter/Callback.php';
- /**
- * @category Zend
- * @package Zend_Paginator
- * @subpackage UnitTests
- * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- class Zend_PaginatorTest extends PHPUnit_Framework_TestCase
- {
- /**
- * Runs the test methods of this class.
- *
- * @return void
- */
- public static function main()
- {
- $suite = new PHPUnit_Framework_TestSuite(__CLASS__);
- $result = PHPUnit_TextUI_TestRunner::run($suite);
- }
- /**
- * Paginator instance
- *
- * @var Zend_Paginator
- */
- protected $_paginator = null;
- protected $_testCollection = null;
- protected $_cache;
- protected $_query = null;
- protected $_config = null;
- protected $_adapter = null;
- protected function setUp()
- {
- if (!extension_loaded('pdo_sqlite')) {
- $this->markTestSkipped('Pdo_Sqlite extension is not loaded');
- }
- $this->_adapter = new Zend_Db_Adapter_Pdo_Sqlite(array(
- 'dbname' => dirname(__FILE__) . '/Paginator/_files/test.sqlite'
- ));
- $this->_query = $this->_adapter->select()->from('test');
- $this->_testCollection = range(1, 101);
- $this->_paginator = Zend_Paginator::factory($this->_testCollection);
- $this->_config = new Zend_Config_Xml(dirname(__FILE__) . '/Paginator/_files/config.xml');
- // get a fresh new copy of ViewRenderer in each tests
- Zend_Controller_Action_HelperBroker::resetHelpers();
- $fO = array('lifetime' => 3600, 'automatic_serialization' => true);
- $bO = array('cache_dir'=> $this->_getTmpDir());
- $this->_cache = Zend_Cache::factory('Core', 'File', $fO, $bO);
- Zend_Paginator::setCache($this->_cache);
- $this->_restorePaginatorDefaults();
- }
- protected function tearDown()
- {
- $this->_dbConn = null;
- $this->_testCollection = null;
- $this->_paginator = null;
- }
- protected function _getTmpDir()
- {
- $tmpDir = sys_get_temp_dir() . '/zend_paginator';
- if (file_exists($tmpDir)) {
- $this->_rmDirRecursive($tmpDir);
- }
- mkdir($tmpDir);
- $this->cacheDir = $tmpDir;
- return $tmpDir;
- }
- protected function _rmDirRecursive($path)
- {
- $dir = new DirectoryIterator($path);
- foreach ($dir as $file) {
- if (!$file->isDir()) {
- unlink($file->getPathname());
- } elseif (!in_array($file->getFilename(), array('.', '..'))) {
- $this->_rmDirRecursive($file->getPathname());
- }
- }
- if (!rmdir($path)) {
- throw new Exception('Unable to remove temporary directory ' . $path
- . '; perhaps it has a nested structure?');
- }
- }
- protected function _restorePaginatorDefaults()
- {
- $this->_paginator->setItemCountPerPage(10);
- $this->_paginator->setCurrentPageNumber(1);
- $this->_paginator->setPageRange(10);
- $this->_paginator->setView();
- Zend_Paginator::setDefaultScrollingStyle();
- Zend_View_Helper_PaginationControl::setDefaultViewPartial(null);
- Zend_Paginator::setConfig($this->_config->default);
- $loader = Zend_Paginator::getScrollingStyleLoader();
- $loader->clearPaths();
- $loader->addPrefixPath('Zend_Paginator_ScrollingStyle', 'Zend/Paginator/ScrollingStyle');
- $this->_cache->clean();
- $this->_paginator->setCacheEnabled(true);
- }
- public function testFactoryReturnsArrayAdapter()
- {
- $paginator = Zend_Paginator::factory($this->_testCollection);
- $this->assertType('Zend_Paginator_Adapter_Array', $paginator->getAdapter());
- }
- public function testFactoryReturnsDbSelectAdapter()
- {
- $paginator = Zend_Paginator::factory($this->_query);
- $this->assertType('Zend_Paginator_Adapter_DbSelect', $paginator->getAdapter());
- }
- // ZF-4607
- public function testFactoryReturnsDbTableSelectAdapter()
- {
- $table = new TestTable($this->_adapter);
- $paginator = Zend_Paginator::factory($table->select());
- $this->assertType('Zend_Paginator_Adapter_DbSelect', $paginator->getAdapter());
- }
- public function testFactoryReturnsIteratorAdapter()
- {
- $paginator = Zend_Paginator::factory(new ArrayIterator($this->_testCollection));
- $this->assertType('Zend_Paginator_Adapter_Iterator', $paginator->getAdapter());
- }
- public function testFactoryReturnsNullAdapter()
- {
- $paginator = Zend_Paginator::factory(101);
- $this->assertType('Zend_Paginator_Adapter_Null', $paginator->getAdapter());
- }
- public function testFactoryThrowsInvalidClassExceptionAdapter()
- {
- try {
- $paginator = Zend_Paginator::factory(new stdClass());
- } catch (Exception $e) {
- $this->assertType('Zend_Paginator_Exception', $e);
- $this->assertContains('stdClass', $e->getMessage());
- }
- }
- public function testFactoryThrowsInvalidTypeExceptionAdapter()
- {
- try {
- $paginator = Zend_Paginator::factory('invalid argument');
- } catch (Exception $e) {
- $this->assertType('Zend_Paginator_Exception', $e);
- $this->assertContains('string', $e->getMessage());
- }
- }
- public function testAddsSingleScrollingStylePrefixPath()
- {
- Zend_Paginator::addScrollingStylePrefixPath('prefix1', 'path1');
- $loader = Zend_Paginator::getScrollingStyleLoader();
- $paths = $loader->getPaths();
- $this->assertArrayHasKey('prefix1_', $paths);
- $this->assertEquals($paths['prefix1_'], array('path1/'));
- $loader->clearPaths('prefix1');
- }
- public function testAddsSingleScrollingStylePrefixPathWithArray()
- {
- Zend_Paginator::addScrollingStylePrefixPaths(array('prefix' => 'prefix2',
- 'path' => 'path2'));
- $loader = Zend_Paginator::getScrollingStyleLoader();
- $paths = $loader->getPaths();
- $this->assertArrayHasKey('prefix2_', $paths);
- $this->assertEquals($paths['prefix2_'], array('path2/'));
- $loader->clearPaths('prefix2');
- }
- public function testAddsMultipleScrollingStylePrefixPaths()
- {
- $paths = array('prefix3' => 'path3',
- 'prefix4' => 'path4',
- 'prefix5' => 'path5');
- Zend_Paginator::addScrollingStylePrefixPaths($paths);
- $loader = Zend_Paginator::getScrollingStyleLoader();
- $paths = $loader->getPaths();
- for ($i = 3; $i <= 5; $i++) {
- $prefix = 'prefix' . $i . '_';
- $this->assertArrayHasKey($prefix, $paths);
- $this->assertEquals($paths[$prefix], array('path' . $i . '/'));
- }
- $loader->clearPaths('prefix3');
- $loader->clearPaths('prefix4');
- $loader->clearPaths('prefix5');
- }
- public function testAddsSingleAdapterPrefixPath()
- {
- Zend_Paginator::addAdapterPrefixPath('prefix1', 'path1');
- $loader = Zend_Paginator::getAdapterLoader();
- $paths = $loader->getPaths();
- $this->assertArrayHasKey('prefix1_', $paths);
- $this->assertEquals($paths['prefix1_'], array('path1/'));
- $loader->clearPaths('prefix1');
- }
- public function testAddsSingleAdapterPrefixPathWithArray()
- {
- Zend_Paginator::addAdapterPrefixPaths(array('prefix' => 'prefix2',
- 'path' => 'path2'));
- $loader = Zend_Paginator::getAdapterLoader();
- $paths = $loader->getPaths();
- $this->assertArrayHasKey('prefix2_', $paths);
- $this->assertEquals($paths['prefix2_'], array('path2/'));
- $loader->clearPaths('prefix2');
- }
- public function testAddsMultipleAdapterPrefixPaths()
- {
- $paths = array('prefix3' => 'path3',
- 'prefix4' => 'path4',
- 'prefix5' => 'path5');
- Zend_Paginator::addAdapterPrefixPaths($paths);
- $loader = Zend_Paginator::getAdapterLoader();
- $paths = $loader->getPaths();
- for ($i = 3; $i <= 5; $i++) {
- $prefix = 'prefix' . $i . '_';
- $this->assertArrayHasKey($prefix, $paths);
- $this->assertEquals($paths[$prefix], array('path' . $i . '/'));
- }
- $loader->clearPaths('prefix3');
- $loader->clearPaths('prefix4');
- $loader->clearPaths('prefix5');
- }
- public function testGetsAndSetsDefaultScrollingStyle()
- {
- $this->assertEquals(Zend_Paginator::getDefaultScrollingStyle(), 'Sliding');
- Zend_Paginator::setDefaultScrollingStyle('Scrolling');
- $this->assertEquals(Zend_Paginator::getDefaultScrollingStyle(), 'Scrolling');
- Zend_Paginator::setDefaultScrollingStyle('Sliding');
- }
- public function testHasCorrectCountAfterInit()
- {
- $paginator = Zend_Paginator::factory(range(1, 101));
- $this->assertEquals(11, $paginator->count());
- }
- public function testHasCorrectCountOfAllItemsAfterInit()
- {
- $paginator = Zend_Paginator::factory(range(1, 101));
- $this->assertEquals(101, $paginator->getTotalItemCount());
- }
- public function testAddCustomAdapterPathsInConstructor()
- {
- $paginator = Zend_Paginator::factory(range(1, 101), Zend_Paginator::INTERNAL_ADAPTER, array('My_Paginator_Adapter' => 'My/Paginator/Adapter'));
- $loader = Zend_Paginator::getAdapterLoader();
- $paths = $loader->getPaths();
- $this->assertEquals(2, count($paths));
- $this->assertEquals(array('Zend_Paginator_Adapter_' => array('Zend/Paginator/Adapter/'),
- 'My_Paginator_Adapter_' => array('My/Paginator/Adapter/')), $paths);
- $loader->clearPaths('My_Paginator_Adapter');
- }
- public function testLoadsFromConfig()
- {
- Zend_Paginator::setConfig($this->_config->testing);
- $this->assertEquals('Scrolling', Zend_Paginator::getDefaultScrollingStyle());
- $paths = array(
- 'prefix6' => 'path6',
- 'prefix7' => 'path7',
- 'prefix8' => 'path8'
- );
- $loader = Zend_Paginator::getScrollingStyleLoader();
- $paths = $loader->getPaths();
- for ($i = 6; $i <= 8; $i++) {
- $prefix = 'prefix' . $i . '_';
- $this->assertArrayHasKey($prefix, $paths);
- $this->assertEquals($paths[$prefix], array('path' . $i . '/'));
- }
- $loader->clearPaths('prefix6');
- $loader->clearPaths('prefix7');
- $loader->clearPaths('prefix8');
- $loader = Zend_Paginator::getAdapterLoader();
- $paths = $loader->getPaths();
- for ($i = 6; $i <= 8; $i++) {
- $prefix = 'prefix' . $i . '_';
- $this->assertArrayHasKey($prefix, $paths);
- $this->assertEquals($paths[$prefix], array('path' . $i . '/'));
- }
- $loader->clearPaths('prefix6');
- $loader->clearPaths('prefix7');
- $loader->clearPaths('prefix8');
- $paginator = Zend_Paginator::factory(range(1, 101));
- $this->assertEquals(3, $paginator->getItemCountPerPage());
- $this->assertEquals(7, $paginator->getPageRange());
- }
- public function testGetsPagesForPageOne()
- {
- $expected = new stdClass();
- $expected->pageCount = 11;
- $expected->itemCountPerPage = 10;
- $expected->first = 1;
- $expected->current = 1;
- $expected->last = 11;
- $expected->next = 2;
- $expected->pagesInRange = array_combine(range(1, 10), range(1, 10));
- $expected->firstPageInRange = 1;
- $expected->lastPageInRange = 10;
- $expected->currentItemCount = 10;
- $expected->totalItemCount = 101;
- $expected->firstItemNumber = 1;
- $expected->lastItemNumber = 10;
- $actual = $this->_paginator->getPages();
- $this->assertEquals($expected, $actual);
- }
- public function testGetsPagesForPageTwo()
- {
- $expected = new stdClass();
- $expected->pageCount = 11;
- $expected->itemCountPerPage = 10;
- $expected->first = 1;
- $expected->current = 2;
- $expected->last = 11;
- $expected->previous = 1;
- $expected->next = 3;
- $expected->pagesInRange = array_combine(range(1, 10), range(1, 10));
- $expected->firstPageInRange = 1;
- $expected->lastPageInRange = 10;
- $expected->currentItemCount = 10;
- $expected->totalItemCount = 101;
- $expected->firstItemNumber = 11;
- $expected->lastItemNumber = 20;
- $this->_paginator->setCurrentPageNumber(2);
- $actual = $this->_paginator->getPages();
- $this->assertEquals($expected, $actual);
- }
- public function testRendersWithoutPartial()
- {
- $this->_paginator->setView(new Zend_View());
- $string = @$this->_paginator->__toString();
- $this->assertEquals('', $string);
- }
- public function testRendersWithPartial()
- {
- $view = new Zend_View();
- $view->addBasePath(dirname(__FILE__) . '/Paginator/_files');
- $view->addHelperPath(dirname(__FILE__) . '/../../../trunk/library/Zend/View/Helper', 'Zend_View_Helper');
- Zend_View_Helper_PaginationControl::setDefaultViewPartial('partial.phtml');
- $this->_paginator->setView($view);
- $string = $this->_paginator->__toString();
- $this->assertEquals('partial rendered successfully', $string);
- }
- public function testGetsPageCount()
- {
- $this->assertEquals(11, $this->_paginator->count());
- }
- public function testGetsAndSetsItemCountPerPage()
- {
- Zend_Paginator::setConfig(new Zend_Config(array()));
- $this->_paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array(range(1, 101)));
- $this->assertEquals(10, $this->_paginator->getItemCountPerPage());
- $this->_paginator->setItemCountPerPage(15);
- $this->assertEquals(15, $this->_paginator->getItemCountPerPage());
- $this->_paginator->setItemCountPerPage(0);
- $this->assertEquals(10, $this->_paginator->getItemCountPerPage());
- $this->_paginator->setItemCountPerPage(10);
- }
- public function testGetsCurrentItemCount()
- {
- $this->_paginator->setItemCountPerPage(10);
- $this->_paginator->setPageRange(10);
- $this->assertEquals(10, $this->_paginator->getCurrentItemCount());
- $this->_paginator->setCurrentPageNumber(11);
- $this->assertEquals(1, $this->_paginator->getCurrentItemCount());
- $this->_paginator->setCurrentPageNumber(1);
- }
- public function testGetsCurrentItems()
- {
- $items = $this->_paginator->getCurrentItems();
- $this->assertType('ArrayIterator', $items);
- $count = 0;
- foreach ($items as $item) {
- $count++;
- }
- $this->assertEquals(10, $count);
- }
- public function testGetsIterator()
- {
- $items = $this->_paginator->getIterator();
- $this->assertType('ArrayIterator', $items);
- $count = 0;
- foreach ($items as $item) {
- $count++;
- }
- $this->assertEquals(10, $count);
- }
- public function testGetsAndSetsCurrentPageNumber()
- {
- $this->assertEquals(1, $this->_paginator->getCurrentPageNumber());
- $this->_paginator->setCurrentPageNumber(-1);
- $this->assertEquals(1, $this->_paginator->getCurrentPageNumber());
- $this->_paginator->setCurrentPageNumber(11);
- $this->assertEquals(11, $this->_paginator->getCurrentPageNumber());
- $this->_paginator->setCurrentPageNumber(111);
- $this->assertEquals(11, $this->_paginator->getCurrentPageNumber());
- $this->_paginator->setCurrentPageNumber(1);
- $this->assertEquals(1, $this->_paginator->getCurrentPageNumber());
- }
- public function testGetsAbsoluteItemNumber()
- {
- $this->assertEquals(1, $this->_paginator->getAbsoluteItemNumber(1));
- $this->assertEquals(11, $this->_paginator->getAbsoluteItemNumber(1, 2));
- $this->assertEquals(24, $this->_paginator->getAbsoluteItemNumber(4, 3));
- }
- public function testGetsItem()
- {
- $this->assertEquals(1, $this->_paginator->getItem(1));
- $this->assertEquals(11, $this->_paginator->getItem(1, 2));
- $this->assertEquals(24, $this->_paginator->getItem(4, 3));
- }
- public function testThrowsExceptionWhenCollectionIsEmpty()
- {
- $paginator = Zend_Paginator::factory(array());
- try {
- $paginator->getItem(1);
- } catch (Exception $e) {
- $this->assertType('Zend_Paginator_Exception', $e);
- $this->assertContains('Page 1 does not exist', $e->getMessage());
- }
- }
- public function testThrowsExceptionWhenRetrievingNonexistentItemFromLastPage()
- {
- try {
- $this->_paginator->getItem(10, 11);
- } catch (Exception $e) {
- $this->assertType('Zend_Paginator_Exception', $e);
- $this->assertContains('Page 11 does not contain item number 10', $e->getMessage());
- }
- }
- public function testNormalizesPageNumber()
- {
- $this->assertEquals(1, $this->_paginator->normalizePageNumber(0));
- $this->assertEquals(1, $this->_paginator->normalizePageNumber(1));
- $this->assertEquals(2, $this->_paginator->normalizePageNumber(2));
- $this->assertEquals(5, $this->_paginator->normalizePageNumber(5));
- $this->assertEquals(10, $this->_paginator->normalizePageNumber(10));
- $this->assertEquals(11, $this->_paginator->normalizePageNumber(11));
- $this->assertEquals(11, $this->_paginator->normalizePageNumber(12));
- }
- public function testNormalizesItemNumber()
- {
- $this->assertEquals(1, $this->_paginator->normalizeItemNumber(0));
- $this->assertEquals(1, $this->_paginator->normalizeItemNumber(1));
- $this->assertEquals(2, $this->_paginator->normalizeItemNumber(2));
- $this->assertEquals(5, $this->_paginator->normalizeItemNumber(5));
- $this->assertEquals(9, $this->_paginator->normalizeItemNumber(9));
- $this->assertEquals(10, $this->_paginator->normalizeItemNumber(10));
- $this->assertEquals(10, $this->_paginator->normalizeItemNumber(11));
- }
- public function testGetsPagesInSubsetRange()
- {
- $actual = $this->_paginator->getPagesInRange(3, 8);
- $this->assertEquals(array_combine(range(3, 8), range(3, 8)), $actual);
- }
- public function testGetsPagesInOutOfBoundsRange()
- {
- $actual = $this->_paginator->getPagesInRange(-1, 12);
- $this->assertEquals(array_combine(range(1, 11), range(1, 11)), $actual);
- }
- public function testGetsItemsByPage()
- {
- $expected = new ArrayIterator(range(1, 10));
- $page1 = $this->_paginator->getItemsByPage(1);
- $this->assertEquals($page1, $expected);
- $this->assertEquals($page1, $this->_paginator->getItemsByPage(1));
- }
- public function testGetsItemCount()
- {
- $this->assertEquals(101, $this->_paginator->getItemCount(range(1, 101)));
- $limitIterator = new LimitIterator(new ArrayIterator(range(1, 101)));
- $this->assertEquals(101, $this->_paginator->getItemCount($limitIterator));
- }
- public function testGetsViewFromViewRenderer()
- {
- $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
- $viewRenderer->setView(new Zend_View());
- $this->assertType('Zend_View_Interface', $this->_paginator->getView());
- }
- public function testGeneratesViewIfNonexistent()
- {
- $this->assertType('Zend_View_Interface', $this->_paginator->getView());
- }
- public function testGetsAndSetsView()
- {
- $this->_paginator->setView(new Zend_View());
- $this->assertType('Zend_View_Interface', $this->_paginator->getView());
- }
- public function testRenders()
- {
- try {
- $this->_paginator->render(new Zend_View());
- } catch (Exception $e) {
- $this->assertType('Zend_View_Exception', $e);
- $this->assertEquals('No view partial provided and no default set', $e->getMessage());
- }
- }
- public function testGetsAndSetsPageRange()
- {
- $this->assertEquals(10, $this->_paginator->getPageRange());
- $this->_paginator->setPageRange(15);
- $this->assertEquals(15, $this->_paginator->getPageRange());
- }
- /**
- * @group ZF-3720
- */
- public function testGivesCorrectItemCount()
- {
- $paginator = Zend_Paginator::factory(range(1, 101));
- $paginator->setCurrentPageNumber(5)
- ->setItemCountPerPage(5);
- $expected = new ArrayIterator(range(21, 25));
- $this->assertEquals($expected, $paginator->getCurrentItems());
- }
- /**
- * @group ZF-3737
- */
- public function testKeepsCurrentPageNumberAfterItemCountPerPageSet()
- {
- $paginator = Zend_Paginator::factory(array('item1', 'item2'));
- $paginator->setCurrentPageNumber(2)
- ->setItemCountPerPage(1);
- $items = $paginator->getCurrentItems();
- $this->assertEquals('item2', $items[0]);
- }
- /**
- * @group ZF-4193
- */
- public function testCastsIntegerValuesToInteger()
- {
- // Current page number
- $this->_paginator->setCurrentPageNumber(3.3);
- $this->assertTrue($this->_paginator->getCurrentPageNumber() == 3);
- // Item count per page
- $this->_paginator->setItemCountPerPage(3.3);
- $this->assertTrue($this->_paginator->getItemCountPerPage() == 3);
- // Page range
- $this->_paginator->setPageRange(3.3);
- $this->assertTrue($this->_paginator->getPageRange() == 3);
- }
- /**
- * @group ZF-4207
- */
- public function testAcceptsTraversableInstanceFromAdapter()
- {
- $paginator = new Zend_Paginator(new Zf4207());
- $this->assertType('ArrayObject', $paginator->getCurrentItems());
- }
- public function testCachedItem()
- {
- $this->_paginator->setCurrentPageNumber(1)->getCurrentItems();
- $this->_paginator->setCurrentPageNumber(2)->getCurrentItems();
- $this->_paginator->setCurrentPageNumber(3)->getCurrentItems();
- $pageItems = $this->_paginator->getPageItemCache();
- $expected = array(
- 1 => new ArrayIterator(range(1, 10)),
- 2 => new ArrayIterator(range(11, 20)),
- 3 => new ArrayIterator(range(21, 30))
- );
- $this->assertEquals($expected, $pageItems);
- }
- public function testClearPageItemCache()
- {
- $this->_paginator->setCurrentPageNumber(1)->getCurrentItems();
- $this->_paginator->setCurrentPageNumber(2)->getCurrentItems();
- $this->_paginator->setCurrentPageNumber(3)->getCurrentItems();
- // clear only page 2 items
- $this->_paginator->clearPageItemCache(2);
- $pageItems = $this->_paginator->getPageItemCache();
- $expected = array(
- 1 => new ArrayIterator(range(1, 10)),
- 3 => new ArrayIterator(range(21, 30))
- );
- $this->assertEquals($expected, $pageItems);
- // clear all
- $this->_paginator->clearPageItemCache();
- $pageItems = $this->_paginator->getPageItemCache();
- $this->assertEquals(array(), $pageItems);
- }
- public function testWithCacheDisabled()
- {
- $this->_paginator->setCacheEnabled(false);
- $this->_paginator->setCurrentPageNumber(1)->getCurrentItems();
- $cachedPageItems = $this->_paginator->getPageItemCache();
- $expected = new ArrayIterator(range(1, 10));
- $this->assertEquals(array(), $cachedPageItems);
- $pageItems = $this->_paginator->getCurrentItems();
- $this->assertEquals($expected, $pageItems);
- }
- public function testCacheDoesNotDisturbResultsWhenChangingParam()
- {
- $this->_paginator->setCurrentPageNumber(1)->getCurrentItems();
- $pageItems = $this->_paginator->setItemCountPerPage(5)->getCurrentItems();
- $expected = new ArrayIterator(range(1, 5));
- $this->assertEquals($expected, $pageItems);
- $pageItems = $this->_paginator->getItemsByPage(2);
- $expected = new ArrayIterator(range(6, 10));
- $this->assertEquals($expected, $pageItems);
- // change the inside Paginator scale
- $pageItems = $this->_paginator->setItemCountPerPage(8)->setCurrentPageNumber(3)->getCurrentItems();
- $pageItems = $this->_paginator->getPageItemCache();
- $expected = array(3 => new ArrayIterator(range(17, 24)));
- $this->assertEquals($expected, $pageItems);
- // get back to already cached data
- $this->_paginator->setItemCountPerPage(5);
- $pageItems = $this->_paginator->getPageItemCache();
- $expected =array(1 => new ArrayIterator(range(1, 5)),
- 2 => new ArrayIterator(range(6, 10)));
- $this->assertEquals($expected, $pageItems);
- }
- public function testToJson()
- {
- $this->_paginator->setCurrentPageNumber(1);
- $json = $this->_paginator->toJson();
- $expected = '"0":1,"1":2,"2":3,"3":4,"4":5,"5":6,"6":7,"7":8,"8":9,"9":10';
- $this->assertContains($expected, $json);
- }
- // ZF-5519
- public function testFilter()
- {
- $filter = new Zend_Filter_Callback(array($this, 'filterCallback'));
- $paginator = Zend_Paginator::factory(range(1, 10));
- $paginator->setFilter($filter);
- $page = $paginator->getCurrentItems();
- $this->assertEquals(new ArrayIterator(range(10, 100, 10)), $page);
- }
- public function filterCallback($value)
- {
- $data = array();
- foreach ($value as $number) {
- $data[] = ($number * 10);
- }
- return $data;
- }
- /**
- * @group ZF-5785
- */
- public function testGetSetDefaultItemCountPerPage()
- {
- Zend_Paginator::setConfig(new Zend_Config(array()));
- $paginator = Zend_Paginator::factory(range(1, 10));
- $this->assertEquals(10, $paginator->getItemCountPerPage());
- Zend_Paginator::setDefaultItemCountPerPage(20);
- $this->assertEquals(20, Zend_Paginator::getDefaultItemCountPerPage());
- $paginator = Zend_Paginator::factory(range(1, 10));
- $this->assertEquals(20, $paginator->getItemCountPerPage());
- $this->_restorePaginatorDefaults();
- }
- /**
- * @group ZF-7207
- */
- public function testItemCountPerPageByDefault()
- {
- $paginator = Zend_Paginator::factory(range(1,20));
- $this->assertEquals(2, $paginator->count());
- }
- }
- // Call Zend_PaginatorTest::main() if this source file is executed directly.
- if (PHPUnit_MAIN_METHOD === 'Zend_PaginatorTest::main') {
- Zend_PaginatorTest::main();
- }
|