Exemplo n.º 1
0
 function testPagination()
 {
     $n = makeNavigator('/hello/page:3/some:value/');
     $this->assertEquals(3, $n->getPage(), 'Открыта страница №3');
     $this->assertEquals('/hello/page:3/', $n->getPageUrl()->toString(), 'Адрес текущей страницы');
     $this->assertEquals(0, $n->getTotal(), 'Количество неизвестно');
     $this->assertFalse($n->getTotalPages(), 'Количество страниц неизвестно');
     $this->assertFalse($n->getLastPage(), 'Неизвестна последняя страница');
     $this->assertFalse($n->getLastPageUrl(), 'Неизвестен адрес последней страницы');
     $this->assertEquals('/hello/page:15/', $n->getPageUrl(15)->toString(), 'Адрес для произвольной страницы');
     $n->setTotal(56);
     $this->assertEquals(1, $n->getTotalPages(), 'Если есть количество без onpage, то всегда будет 1 страница');
     $n->setOnpage(10);
     $this->assertEquals(6, $n->getTotalPages(), 'Количество страниц при 10 штуках на странице');
     $this->assertEquals(2, $n->getPrevPage(), 'Предыдущая страница');
     $this->assertEquals('/hello/page:2/', $n->getPrevPageUrl()->toString(), 'Адрес предыдущей страница');
     $this->assertEquals(4, $n->getNextPage(), 'Следующая страница');
     $this->assertEquals('/hello/page:4/', $n->getNextPageUrl()->toString(), 'Адрес следующей страница');
     $this->assertEquals(1, $n->getFirstPage(), 'Первая страница');
     $this->assertEquals('/hello/page:1/', $n->getFirstPageUrl()->toString(), 'Адрес первой страницы');
     $this->assertEquals(6, $n->getLastPage(), 'Последняя страница');
     $this->assertEquals('/hello/page:6/', $n->getLastPageUrl()->toString(), 'Адрес последней страница');
     $n->setPage(1);
     $this->assertFalse($n->getPrevPage(), 'Нет предыдущей страницы');
     $this->assertFalse($n->getPrevPageUrl(), 'Нет URL для предыдущей страницы');
     $n->setPage(6);
     $this->assertFalse($n->getNextPage(), 'Нет следующей страницы');
     $this->assertFalse($n->getNextPageUrl(), 'Нет URL для следующей страницы');
     $n->addFilterEqual('some');
     $this->assertEquals('/hello/some:value/page:2/', $n->getPageUrl(2)->toString(), 'Фильтры сохраняются при навигации');
 }
Exemplo n.º 2
0
 /** @dataProvider dataFilters() */
 function testFilters($url, $exp, $msg)
 {
     $n = makeNavigator($url);
     $n->addDefaultCondition('`id` > 7');
     $n->addFilterEqual('name', '/^[a-z]+$/');
     $n->addFilterLike('addr');
     $n->addFilterBetween('id', 'is_numeric')->setGreaterOrEqual(false);
     // Возвращается фильтр и его можно донастроить
     $n->addFilter('date', 'is_numeric', function (Navigator $navi, Filter $filter) {
         if ($val = $filter->getCleanValue()) {
             $navi->addCondition('`created_at` >= "' . date('d.m.Y', strtotime('+' . $val . ' day')) . '"');
         }
     });
     $this->assertEquals($exp, $n->processFilters(), $msg);
 }