public function testGetObjectByCursor() { $object1 = new \stdClass(); $object1->foo = 'bar1'; $object2 = new \stdClass(); $object2->foo = 'bar2'; $object3 = new \stdClass(); $object3->foo = 'bar3'; $this->callMethod($this->pager, 'setNbResults', array(3)); $query = $this->getMock('Sonata\\AdminBundle\\Datagrid\\ProxyQueryInterface'); $query->expects($this->any())->method('setFirstResult')->will($this->returnValue($query)); $query->expects($this->any())->method('setMaxResults')->will($this->returnValue($query)); $id = 0; $query->expects($this->any())->method('execute')->will($this->returnCallback(function () use(&$id, $object1, $object2, $object3) { switch ($id) { case 0: return array($object1); break; case 1: return array($object2); break; case 2: return array($object3); break; } return; })); $this->pager->setQuery($query); $this->assertSame($object1, $this->pager->getObjectByCursor(1)); $this->assertSame(1, $this->pager->getCursor()); $id = 1; $this->assertSame($object2, $this->pager->getObjectByCursor(2)); $this->assertSame(2, $this->pager->getCursor()); $id = 2; $this->assertSame($object3, $this->pager->getObjectByCursor(3)); $this->assertSame(3, $this->pager->getCursor()); $id = 3; $this->assertSame(null, $this->pager->getObjectByCursor(4)); $this->assertSame(3, $this->pager->getCursor()); }