/**
  * Check if aggregation returns the expected array.
  */
 public function testToArray()
 {
     $sorts = new Sorts();
     $aggregation = new TopHitsAggregation('test', 0, 1);
     $expectedAgg = new \stdClass();
     $expectedAgg->size = 0;
     $expectedAgg->from = 1;
     $expectedAgg->sort = $sorts->toArray();
     $expected = ['agg_test' => ['top_hits' => $expectedAgg]];
     $this->assertEquals($expected, $aggregation->toArray());
 }
 /**
  * Data provider for testTopHitsAggregation.
  *
  * @return array
  */
 public function getTopHitsAggregationData()
 {
     $out = [];
     // Case #0 simple top hits aggregation with default values.
     $aggregation = new TopHitsAggregation('test-top_hits');
     $expectedHits = [3, 2, 1];
     $out[] = ['aggregation' => $aggregation, 'expectedHits' => $expectedHits];
     // Case #1 top hits aggregation with sort.
     $sorts = new Sorts();
     $sorts->addSort(new Sort('price', Sort::ORDER_ASC));
     $sorts->addSort(new Sort('title', Sort::ORDER_DESC));
     $aggregation = new TopHitsAggregation('test-top_hits', null, null, $sorts);
     $expectedHits = [1, 2, 3];
     $out[] = ['aggregation' => $aggregation, 'expectedHits' => $expectedHits];
     // Case #2 top hits aggregation with from.
     $aggregation = new TopHitsAggregation('test-top_hits', null, 2, null);
     $expectedHits = [1];
     $out[] = ['aggregation' => $aggregation, 'expectedHits' => $expectedHits];
     // Case #3 top hits aggregation with size.
     $aggregation = new TopHitsAggregation('test-top_hits', 2);
     $expectedHits = [3, 2];
     $out[] = ['aggregation' => $aggregation, 'expectedHits' => $expectedHits];
     return $out;
 }
 /**
  * {@inheritdoc}
  */
 public function addBuilder(BuilderInterface $builder, $parameters = [])
 {
     $this->sorts->addSort($builder);
 }