/** * Data provider for testGlobalAggregation. * * @return array */ public function getGlobalAggregationData() { $out = []; $results = ['agg_test_agg' => ['doc_count' => 3, 'agg_test_agg2' => ['buckets' => [['key' => '*-40.0', 'to' => 40, 'to_as_string' => '40.0', 'doc_count' => 3]]]]]; $aggregation = new GlobalAggregation('test_agg'); $aggregation2 = new RangeAggregation('test_agg2'); $aggregation2->setField('price'); $aggregation2->addRange(null, 40); $aggregation->addAggregation($aggregation2); // Case #0 global aggregation without query. $out[] = [$aggregation, null, $results, 3]; // Case #1 global aggregation with query. $query = new MatchQuery('title', 'bar'); $out[] = [$aggregation, $query, $results, 1]; return $out; }
/** * Data provider for testFilterAggregation(). * * @return array */ public function getFilterAggregationData() { $out = []; // Case #0 Single filter aggregation. $aggregation = new FilterAggregation('test_agg'); $filter = new RegexpFilter('title', 'pizza'); $aggregation->setFilter($filter); $result = ['agg_test_agg' => ['doc_count' => 1]]; $out[] = [$aggregation, $result]; // Case #1 Nested filter aggregation. $aggregation = new FilterAggregation('test_agg'); $filter = new RegexpFilter('title', 'pizza'); $aggregation->setFilter($filter); $aggregation2 = new RangeAggregation('test_agg_2'); $aggregation2->setField('price'); $aggregation2->addRange(10, 20); $aggregation->addAggregation($aggregation2); $result = ['agg_test_agg' => ['doc_count' => 1, 'agg_test_agg_2' => ['buckets' => [['key' => '10.0-20.0', 'from' => 10, 'from_as_string' => '10.0', 'to' => 20, 'to_as_string' => '20.0', 'doc_count' => 1]]]]]; $out[] = [$aggregation, $result]; return $out; }
/** * @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; }
/** * Tests removing ranges from aggregation. */ public function testRemoveAggregationWithFalse() { $range = new RangeAggregation('bar'); $this->assertFalse($range->removeRange(10, 20), 'Range does not exist'); $range->addRange(10, 20); $range->addRange(25, 30, 'test_key'); $this->assertTrue($range->removeRange(10, 20), 'Range removed.'); $this->assertFalse($range->removeRangeByKey('test_key'), 'Keyed ranges are not enabled yet!'); $range->setKeyed(true); $range->addRange(15, 20, 'foo'); $this->assertFalse($range->removeRangeByKey('key'), 'Keyed range does not exist.'); $this->assertTrue($range->removeRangeByKey('foo'), 'Keyed range should be removed.'); }
/** * 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'); }