コード例 #1
0
 /**
  * Test addRange method with nested values.
  */
 public function testRangeAggregationAddRangeNested()
 {
     $aggregation = new RangeAggregation('test_agg');
     $aggregation->setField('test_field');
     $aggregation->addRange('10', '10');
     $aggregation2 = new RangeAggregation('test_agg_2');
     $aggregation2->addRange('20', '20');
     $aggregation->addAggregation($aggregation2);
     $result = ['agg_test_agg' => ['range' => ['field' => 'test_field', 'ranges' => [['from' => '10', 'to' => '10']], 'keyed' => false], 'aggregations' => ['agg_test_agg_2' => ['range' => ['ranges' => [['from' => '20', 'to' => '20']], 'keyed' => false]]]]];
     $this->assertEquals($result, $aggregation->toArray());
 }
コード例 #2
0
 /**
  * @return Search
  */
 public function getTestSubAggregationsData()
 {
     $out = [];
     // Case 0: top hits aggregation inside ranges.
     $search = new Search();
     $rangeAgg = new RangeAggregation('range');
     $rangeAgg->setField('price');
     $rangeAgg->addRange(null, 15);
     $rangeAgg->addRange(15);
     $topHitsAgg = new TopHitsAggregation('top_hits');
     $topHitsAgg->setSort(new Sorts(new Sort('price', Sort::ORDER_DESC)));
     $rangeAgg->addAggregation($topHitsAgg);
     $search->addAggregation($rangeAgg);
     $expectedTopHits = [[1], [2, 3]];
     $out[] = [$search, $expectedTopHits];
     return $out;
 }
コード例 #3
0
 /**
  * Test for range aggregation.
  *
  * @param array $aggregation
  * @param array $expectedResult
  *
  * @dataProvider getRangeAggregationData
  */
 public function testRangeAggregation($aggregation, $expectedResult)
 {
     /** @var Repository $repo */
     $repo = $this->getManager()->getRepository('AcmeTestBundle:Product');
     $rangeAggregation = new RangeAggregation($aggregation['name']);
     $rangeAggregation->setField($aggregation['field']);
     $rangeAggregation->addRange($aggregation['range']['from'], $aggregation['range']['to']);
     if (!empty($aggregation['agg'])) {
         $childAgg = $aggregation['agg'];
         $aggregation2 = new RangeAggregation($childAgg['name']);
         $aggregation2->setKeyed($childAgg['keyed']);
         $aggregation2->addRange($childAgg['range']['from'], $childAgg['range']['to'], $childAgg['key']);
         $rangeAggregation->addAggregation($aggregation2);
     }
     $search = $repo->createSearch()->addAggregation($rangeAggregation);
     $results = $repo->execute($search, Repository::RESULTS_RAW);
     $this->assertArrayHasKey('aggregations', $results);
     $this->assertEquals($expectedResult, $results['aggregations']);
 }