* Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) * * Licensed under The Open Group Test Suite License * Redistributions of files must retain the above copyright notice. * * @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) * @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests * @package cake * @subpackage cake.tests.cases.libs.view.helpers * @since CakePHP(tm) v 1.2.0.4206 * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License */ App::import('Helper', array('Html', 'Paginator', 'Form', 'Ajax', 'Javascript', 'Js')); Mock::generate('JsHelper', 'PaginatorMockJsHelper'); if (!defined('FULL_BASE_URL')) { define('FULL_BASE_URL', 'http://cakephp.org'); } /** * PaginatorHelperTest class * * @package cake * @subpackage cake.tests.cases.libs.view.helpers */ class PaginatorHelperTest extends CakeTestCase { /** * setUp method * * @access public * @return void */ function setUp() { $this->Paginator = new PaginatorHelper(array('ajax' => 'Ajax')); $this->Paginator->params['paging'] = array( 'Article' => array( 'current' => 9, 'count' => 62, 'prevPage' => false, 'nextPage' => true, 'pageCount' => 7, 'defaults' => array( 'order' => array('Article.date' => 'asc'), 'limit' => 9, 'conditions' => array() ), 'options' => array( 'order' => array('Article.date' => 'asc'), 'limit' => 9, 'page' => 1, 'conditions' => array() ) ) ); $this->Paginator->Html =& new HtmlHelper(); $this->Paginator->Ajax =& new AjaxHelper(); $this->Paginator->Ajax->Html =& new HtmlHelper(); $this->Paginator->Ajax->Javascript =& new JavascriptHelper(); $this->Paginator->Ajax->Form =& new FormHelper(); Configure::write('Routing.prefixes', array()); Router::reload(); } /** * tearDown method * * @access public * @return void */ function tearDown() { unset($this->Paginator); } /** * testHasPrevious method * * @access public * @return void */ function testHasPrevious() { $this->assertIdentical($this->Paginator->hasPrev(), false); $this->Paginator->params['paging']['Article']['prevPage'] = true; $this->assertIdentical($this->Paginator->hasPrev(), true); $this->Paginator->params['paging']['Article']['prevPage'] = false; } /** * testHasNext method * * @access public * @return void */ function testHasNext() { $this->assertIdentical($this->Paginator->hasNext(), true); $this->Paginator->params['paging']['Article']['nextPage'] = false; $this->assertIdentical($this->Paginator->hasNext(), false); $this->Paginator->params['paging']['Article']['nextPage'] = true; } /** * testDisabledLink method * * @access public * @return void */ function testDisabledLink() { $this->Paginator->params['paging']['Article']['nextPage'] = false; $this->Paginator->params['paging']['Article']['page'] = 1; $result = $this->Paginator->next('Next', array(), true); $expected = 'Next'; $this->assertEqual($result, $expected); $this->Paginator->params['paging']['Article']['prevPage'] = false; $result = $this->Paginator->prev('prev', array('update' => 'theList', 'indicator' => 'loading', 'url' => array('controller' => 'posts')), null, array('class' => 'disabled', 'tag' => 'span')); $expected = array( 'span' => array('class' => 'disabled'), 'prev', '/span' ); $this->assertTags($result, $expected); } /** * testSortLinks method * * @access public * @return void */ function testSortLinks() { Router::reload(); Router::parse('/'); Router::setRequestInfo(array( array('plugin' => null, 'controller' => 'accounts', 'action' => 'index', 'pass' => array(), 'form' => array(), 'url' => array('url' => 'accounts/'), 'bare' => 0), array('plugin' => null, 'controller' => null, 'action' => null, 'base' => '/officespace', 'here' => '/officespace/accounts/', 'webroot' => '/officespace/', 'passedArgs' => array()) )); $this->Paginator->options(array('url' => array('param'))); $result = $this->Paginator->sort('title'); $expected = array( 'a' => array('href' => '/officespace/accounts/index/param/page:1/sort:title/direction:asc'), 'Title', '/a' ); $this->assertTags($result, $expected); $result = $this->Paginator->sort('date'); $expected = array( 'a' => array('href' => '/officespace/accounts/index/param/page:1/sort:date/direction:desc', 'class' => 'asc'), 'Date', '/a' ); $this->assertTags($result, $expected); $result = $this->Paginator->numbers(array('modulus'=> '2', 'url'=> array('controller'=>'projects', 'action'=>'sort'),'update'=>'list')); $this->assertPattern('/\/projects\/sort\/page:2/', $result); $this->assertPattern('/