public function testGridBasic()
 {
     // create Request mock (ok this is not a mock....)
     $_SERVER["REQUEST_URI"] = "/foo";
     $request = new \Symfony\Component\HttpFoundation\Request();
     // create gridManager instance
     $gridManager = $this->getGridManager();
     // create queryBuilder
     $em = $this->getEntityManager();
     $repository = $em->getRepository('Kitpages\\DataGridBundle\\Tests\\TestEntities\\Node');
     $queryBuilder = $repository->createQueryBuilder("node");
     $queryBuilder->select("node");
     $gridConfig = new GridConfig();
     $gridConfig->setCountFieldName("node.id");
     $gridConfig->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["node.createdAt"]->format("Y");
     })));
     // get paginator
     $gridConfig->setQueryBuilder($queryBuilder);
     $grid = $gridManager->getGrid($gridConfig, $request);
     $paginator = $grid->getPaginator();
     // tests paginator
     $this->assertEquals(11, $paginator->getTotalItemCount());
     // grid test
     $itemList = $grid->getItemList();
     $this->assertEquals(11, count($itemList));
     $this->assertEquals(1, $itemList[0]["node.id"]);
     // simple callback
     $this->assertEquals("2010/04/24", $grid->displayGridValue($itemList[0], $gridConfig->getFieldByName("node.createdAt")));
     $this->assertEquals("foobar:2010", $grid->displayGridValue($itemList[0], $gridConfig->getFieldByName("node.content")));
 }
 public function testAddFieldWrongArgumentType()
 {
     $arguments = array(true, 1, 2.2, array(), new \stdClass(), null, function () {
     });
     foreach ($arguments as $argument) {
         try {
             $this->gridConfig->addField($argument);
             $this->fail();
         } catch (\InvalidArgumentException $e) {
             $this->assertTrue(true);
         }
     }
 }