| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 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 ?>