/**
  * Get aggregation collection with several aggregations registered.
  *
  * @return AbstractAggregation
  */
 private function buildAggregation()
 {
     $aggregation = new TermsAggregation('terms');
     $aggregation->setField('description');
     $aggregation2 = new RangeAggregation('range');
     $aggregation2->setField('price');
     $aggregation2->addRange(null, 20);
     $aggregation2->addRange(20, null);
     $aggregation->addAggregation($aggregation2);
     return $aggregation;
 }
 /**
  * Tests if parameter can be passed to constructor.
  */
 public function testConstructor()
 {
     $aggregation = new RangeAggregation('foo', 'fieldValue', [['from' => 'now', 'key' => 'nowkey']], true);
     $this->assertSame(['range' => ['keyed' => true, 'ranges' => [['from' => 'now', 'key' => 'nowkey']], 'field' => 'fieldValue']], $aggregation->toArray());
 }
 /**
  * Tests removeRange method.
  */
 public function testRangeAggregationRemoveRange()
 {
     $aggregation = new RangeAggregation('foo');
     $aggregation->setField('price');
     $aggregation->setKeyed(true);
     $aggregation->addRange(100, 300, 'key');
     $aggregation->addRange(500, 700, 'range_2');
     $expected = ['field' => 'price', 'keyed' => true, 'ranges' => [['from' => 100, 'to' => 300, 'key' => 'key']]];
     $aggregation->removeRange(500, 700);
     $result = $aggregation->getArray();
     $this->assertEquals($result, $expected, 'get expected array of ranges');
     $result = $aggregation->removeRange(500, 700);
     $this->assertFalse($result, 'returns false after removing not-existing range');
 }