[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/wact/tests/cases/component/ -> WactPagerComponentTest.class.php (source)

   1  <?php
   2  /*
   3   * Limb PHP Framework
   4   *
   5   * @link http://limb-project.com 
   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
   8   */
   9  
  10  require_once('limb/wact/src/components/pager/WactPagerComponent.class.php');
  11  
  12  class WactPagerComponentTest extends UnitTestCase
  13  {
  14    protected $component;
  15    protected $request;
  16    protected $old_get;
  17    protected $old_server;
  18  
  19    function setUp()
  20    {
  21      parent :: setUp();
  22  
  23      $this->component = new WactPagerComponent('navigator');
  24  
  25      $this->old_get = $_GET;
  26      $this->old_server = $_SERVER;
  27  
  28      $_SERVER['REQUEST_URI'] = 'http://test.com';
  29      $_GET = array();
  30    }
  31  
  32    function tearDown()
  33    {
  34      $_GET = $this->old_get;
  35      $_SERVER = $this->old_server;
  36  
  37      parent :: tearDown();
  38    }
  39  
  40    function testReset()
  41    {
  42      $_GET[$this->component->getPagerId()] = 2;
  43  
  44      $this->component->setItemsPerPage(10);
  45      $this->component->setPagesPerSection(5);
  46      $this->component->setTotalItems(100);
  47  
  48      $this->component->prepare();
  49  
  50      $this->assertEqual($this->component->getDisplayedPage(), 2);
  51      $this->assertFalse($this->component->isDisplayedPage());
  52      $this->assertEqual($this->component->getPage(), 1);
  53      $this->assertEqual($this->component->getTotalPages(), 10);
  54      $this->assertEqual($this->component->getPagesPerSection(), 5);
  55      $this->assertTrue($this->component->hasMoreThanOnePage());
  56      $this->assertEqual($this->component->getSectionBeginPage(), 1);
  57      $this->assertEqual($this->component->getSectionEndPage(), 5);
  58      $this->assertTrue($this->component->hasNext());
  59      $this->assertTrue($this->component->hasPrev());
  60      $this->assertEqual($this->component->getDisplayedPageBeginItem(), 11);
  61      $this->assertEqual($this->component->getStartingItem(), 10);
  62      $this->assertEqual($this->component->getDisplayedPageEndItem(), 20);
  63    }
  64  
  65    function testResetTotalItemsZero()
  66    {
  67      $_GET[$this->component->getPagerId()] = 2;
  68  
  69      $this->component->setItemsPerPage(10);
  70      $this->component->setPagesPerSection(5);
  71      $this->component->setTotalItems(0);
  72  
  73      $this->component->prepare();
  74  
  75      $this->assertEqual($this->component->getDisplayedPage(), 1);
  76      $this->assertEqual($this->component->getPage(), 1);
  77      $this->assertTrue($this->component->isDisplayedPage());
  78      $this->assertEqual($this->component->getTotalPages(), 1);
  79      $this->assertFalse($this->component->hasMoreThanOnePage());
  80      $this->assertEqual($this->component->getSectionBeginPage(), 1);
  81      $this->assertEqual($this->component->getSectionEndPage(), 1);
  82      $this->assertFalse($this->component->hasNext());
  83      $this->assertFalse($this->component->hasPrev());
  84      $this->assertEqual($this->component->getDisplayedPageBeginItem(), 0);
  85      $this->assertEqual($this->component->getStartingItem(), 0);
  86      $this->assertEqual($this->component->getDisplayedPageEndItem(), 0);
  87    }
  88  
  89    function testNextPage()
  90    {
  91      $_GET[$this->component->getPagerId()] = 2;
  92  
  93      $this->component->setTotalItems(40);
  94      $this->component->setItemsPerPage(10);
  95      $this->component->setPagesPerSection(5);
  96  
  97      $this->component->prepare();
  98  
  99      $this->assertEqual($this->component->getPage(), 1);
 100  
 101      $this->assertTrue($this->component->nextPage());
 102      $this->assertTrue($this->component->isValid());
 103  
 104      $this->assertEqual($this->component->getPage(), 2);
 105    }
 106  
 107    function testNextPageOutOfBounds()
 108    {
 109      $_GET[$this->component->getPagerId()] = 2;
 110  
 111      $this->component->setTotalItems(40);
 112      $this->component->setItemsPerPage(10);
 113  
 114      $this->component->prepare();
 115  
 116      $this->assertTrue($this->component->nextPage());
 117      $this->assertTrue($this->component->isValid());
 118  
 119      $this->assertTrue($this->component->nextPage());
 120      $this->assertTrue($this->component->isValid());
 121  
 122      $this->assertTrue($this->component->nextPage());
 123      $this->assertTrue($this->component->isValid());
 124  
 125      $this->assertFalse($this->component->nextPage());
 126      $this->assertFalse($this->component->isValid());
 127    }
 128  
 129    function testSectionNumbers()
 130    {
 131      $_GET[$this->component->getPagerId()] = 2;
 132  
 133      $this->component->setTotalItems(40);
 134      $this->component->setItemsPerPage(3);
 135      $this->component->setPagesPerSection(10);
 136  
 137      $this->component->prepare();
 138  
 139      $this->component->nextPage();
 140  
 141      $this->assertEqual($this->component->getSection(), 1);
 142      $this->assertEqual($this->component->getSectionBeginPage(), 1);
 143      $this->assertEqual($this->component->getSectionEndPage(), 10);
 144    }
 145  
 146    function testSectionNumbersRightBound()
 147    {
 148      $_GET[$this->component->getPagerId()] = 2;
 149  
 150      $this->component->setTotalItems(40);
 151      $this->component->setItemsPerPage(10);// 4 pages total

 152      $this->component->setPagesPerSection(10);
 153  
 154      $this->component->prepare();
 155  
 156      $this->component->nextPage();
 157  
 158      $this->assertEqual($this->component->getSection(), 1);
 159      $this->assertEqual($this->component->getSectionBeginPage(), 1);
 160      $this->assertEqual($this->component->getSectionEndPage(), 4);
 161    }
 162  
 163    function testNextSection()
 164    {
 165      $_GET[$this->component->getPagerId()] = 2;
 166  
 167      $this->component->setTotalItems(40);
 168      $this->component->setItemsPerPage(5);
 169      $this->component->setPagesPerSection(2);
 170  
 171      $this->component->prepare();
 172  
 173      $this->assertTrue($this->component->nextSection());
 174      $this->assertTrue($this->component->nextSection());
 175      $this->assertTrue($this->component->nextSection());
 176      $this->assertFalse($this->component->nextSection());
 177    }
 178  
 179    function testGetFirstPageUri()
 180    {
 181      $_GET['p1'] = ' wow ';
 182      $_GET['p2'] = array('3' => 'yo');
 183  
 184      $this->component->setPagerPrefix('p');
 185      $this->component->prepare();
 186  
 187      $uri = $this->component->getPageUri(1);
 188  
 189      $this->assertEqual($uri, 'http://test.com?p1=+wow+&p2[3]=yo');
 190    }
 191  
 192    function testGetFirstPageUriNoQuery()
 193    {
 194      $this->component->setPagerPrefix('p');
 195      $this->component->prepare();
 196  
 197      $uri = $this->component->getPageUri(1);
 198  
 199      $this->assertEqual($uri, 'http://test.com');
 200    }
 201  
 202    function testGetPageUri()
 203    {
 204      $_GET['p1'] = 'wow';
 205      $_GET['p2'] = array('3' => ' yo ');
 206  
 207      $this->component->setPagerPrefix('p');
 208      $this->component->prepare();
 209  
 210      $uri = $this->component->getPageUri(2);
 211  
 212      $this->assertEqual($uri, 'http://test.com?p1=wow&p2[3]=+yo+&p_navigator=2');
 213    }
 214  
 215    function testGetPrevSectionUri()
 216    {
 217      $this->component->setPagerPrefix('p');
 218      $this->component->setTotalItems(60);
 219      $this->component->setItemsPerPage(10);
 220      $this->component->setPagesPerSection(2);
 221  
 222      $_GET['p_navigator'] = 3;
 223  
 224      $this->component->prepare();
 225  
 226      $this->component->nextPage();
 227  
 228      $uri = $this->component->getSectionUri();
 229  
 230      $this->assertEqual($uri, 'http://test.com?p_navigator=2');
 231      $this->assertEqual($this->component->getSectionBeginPage(), 1);
 232      $this->assertEqual($this->component->getSectionEndPage(), 2);
 233    }
 234  
 235    function testGetNextSectionUri()
 236    {
 237      $_GET['p_navigator'] = 3;
 238  
 239      $this->component->setPagerPrefix('p');
 240      $this->component->setTotalItems(60);
 241      $this->component->setItemsPerPage(10);
 242      $this->component->setPagesPerSection(2);
 243  
 244      $this->component->prepare();
 245  
 246      for($i = 0; $i < 5; $i++)
 247        $this->component->nextPage();
 248  
 249      $uri = $this->component->getSectionUri(2);
 250  
 251      $this->assertEqual($uri, 'http://test.com?p_navigator=5');
 252      $this->assertEqual($this->component->getSectionBeginPage(), 5);
 253      $this->assertEqual($this->component->getSectionEndPage(), 6);
 254    }
 255  }
 256  
 257  ?>