ElasticaTest.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. use Elastica\Query;
  3. use Elastica\Query\Term;
  4. use Elastica\Result;
  5. use Elastica\Type;
  6. use Knp\Component\Pager\Paginator;
  7. use Knp\Component\Pager\Event\Subscriber\Paginate\ElasticaQuerySubscriber;
  8. use Symfony\Component\EventDispatcher\EventDispatcher;
  9. use Test\Mock\PaginationSubscriber as MockPaginationSubscriber;
  10. use Test\Tool\BaseTestCase;
  11. class ElasticaTest extends BaseTestCase
  12. {
  13. public function testElasticaSubscriber()
  14. {
  15. $dispatcher = new EventDispatcher;
  16. $dispatcher->addSubscriber(new ElasticaQuerySubscriber());
  17. $dispatcher->addSubscriber(new MockPaginationSubscriber); // pagination view
  18. $p = new Paginator($dispatcher);
  19. $query = Query::create(new Term(array(
  20. 'name' => 'Fred',
  21. )));
  22. $response = $this->getMockBuilder('Elastica\\ResultSet')->disableOriginalConstructor()->getMock();
  23. $response->expects($this->once())
  24. ->method('getTotalHits')
  25. ->will($this->returnValue(2));
  26. $response->expects($this->once())
  27. ->method('getResults')
  28. ->will($this->returnValue(array(new Result(array()), new Result(array()))));
  29. $searchable = $this->getMockBuilder('Elastica\\SearchableInterface')->getMock();
  30. $searchable->expects($this->once())
  31. ->method('search')
  32. ->with($query)
  33. ->will($this->returnValue($response));
  34. $view = $p->paginate(array($searchable, $query), 1, 10);
  35. $this->assertEquals(0, $query->getParam('from'), 'Query offset set correctly');
  36. $this->assertEquals(10, $query->getParam('size'), 'Query limit set correctly');
  37. $this->assertSame($response, $view->getCustomParameter('resultSet'), 'Elastica ResultSet available in Paginator');
  38. $this->assertEquals(1, $view->getCurrentPageNumber());
  39. $this->assertEquals(10, $view->getItemNumberPerPage());
  40. $this->assertEquals(2, count($view->getItems()));
  41. $this->assertEquals(2, $view->getTotalItemCount());
  42. }
  43. /**
  44. * @test
  45. */
  46. function shouldSlicePaginateAnArray()
  47. {
  48. /*$dispatcher = new EventDispatcher;
  49. $dispatcher->addSubscriber(new ArraySubscriber);
  50. $dispatcher->addSubscriber(new MockPaginationSubscriber); // pagination view
  51. $p = new Paginator($dispatcher);
  52. $items = range('a', 'u');
  53. $view = $p->paginate($items, 2, 10);
  54. $this->assertEquals(2, $view->getCurrentPageNumber());
  55. $this->assertEquals(10, $view->getItemNumberPerPage());
  56. $this->assertEquals(10, count($view->getItems()));
  57. $this->assertEquals(21, $view->getTotalItemCount());*/
  58. }
  59. }