public function testPaginatorGroupBy() { // create queryBuilder $em = $this->getEntityManager(); $repository = $em->getRepository('Kitpages\\DataGridBundle\\Tests\\TestEntities\\Node'); $queryBuilder = $repository->createQueryBuilder("node"); $queryBuilder->select("node.user, count(node.id) as cnt"); $queryBuilder->groupBy("node.user"); // create EventDispatcher mock $service = $this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcher'); // create Request mock (ok this is not a mock....) $request = new \Symfony\Component\HttpFoundation\Request(); $_SERVER["REQUEST_URI"] = "/foo"; // create gridManager instance $paginatorManager = $this->getPaginatorManager(); // configure paginator $paginatorConfig = new PaginatorConfig(); $paginatorConfig->setCountFieldName("node.user"); $paginatorConfig->setItemCountInPage(3); // get paginator $paginatorConfig->setQueryBuilder($queryBuilder); $paginator = $paginatorManager->getPaginator($paginatorConfig, $request); // tests $this->assertEquals(6, $paginator->getTotalItemCount()); $this->assertEquals(2, $paginator->getTotalPageCount()); $this->assertEquals(array(1, 2), $paginator->getPageRange()); $this->assertEquals(1, $paginator->getCurrentPage()); $this->assertEquals(2, $paginator->getNextButtonPage()); }
public function initGridConfig() { // configure paginator $paginatorConfig = new PaginatorConfig(); $paginatorConfig->setCountFieldName("node.id"); $paginatorConfig->setItemCountInPage(3); $gridConfig = new GridConfig(); $gridConfig->setPaginatorConfig($paginatorConfig); $gridConfig->setCountFieldName("node.id"); $gridConfig->addField(new Field("node.id"))->addField(new Field("node.createdAt", array("sortable" => true, "formatValueCallback" => function ($value) { return $value->format("Y/m/d"); }))); $gridConfig->addField(new Field("node.content", array("formatValueCallback" => function ($value, $row) { return $value . ":" . $row["createdAt"]->format("Y"); }))); $gridConfig->addField(new Field("node.user", array("filterable" => true))); return $gridConfig; }