|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace Elastica\Test\QueryBuilder\DSL; |
|
4
|
|
|
|
|
5
|
|
|
use Elastica\Aggregation; |
|
6
|
|
|
use Elastica\Query\Exists; |
|
7
|
|
|
use Elastica\QueryBuilder\DSL; |
|
8
|
|
|
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait; |
|
9
|
|
|
|
|
10
|
|
|
/** |
|
11
|
|
|
* @internal |
|
12
|
|
|
*/ |
|
13
|
|
|
class AggregationTest extends AbstractDSLTest |
|
14
|
|
|
{ |
|
15
|
|
|
use ExpectDeprecationTrait; |
|
16
|
|
|
|
|
17
|
|
|
/** |
|
18
|
|
|
* @group unit |
|
19
|
|
|
*/ |
|
20
|
|
|
public function testType(): void |
|
21
|
|
|
{ |
|
22
|
|
|
$aggregationDSL = new DSL\Aggregation(); |
|
23
|
|
|
|
|
24
|
|
|
$this->assertInstanceOf(DSL::class, $aggregationDSL); |
|
25
|
|
|
$this->assertEquals(DSL::TYPE_AGGREGATION, $aggregationDSL->getType()); |
|
26
|
|
|
} |
|
27
|
|
|
|
|
28
|
|
|
/** |
|
29
|
|
|
* @group unit |
|
30
|
|
|
*/ |
|
31
|
|
|
public function testInterface(): void |
|
32
|
|
|
{ |
|
33
|
|
|
$aggregationDSL = new DSL\Aggregation(); |
|
34
|
|
|
|
|
35
|
|
|
$this->_assertImplemented($aggregationDSL, 'avg', Aggregation\Avg::class, ['name']); |
|
36
|
|
|
$this->_assertImplemented($aggregationDSL, 'cardinality', Aggregation\Cardinality::class, ['name']); |
|
37
|
|
|
$this->_assertImplemented($aggregationDSL, 'date_histogram', Aggregation\DateHistogram::class, ['name', 'field', 1]); |
|
38
|
|
|
$this->_assertImplemented($aggregationDSL, 'date_range', Aggregation\DateRange::class, ['name']); |
|
39
|
|
|
$this->_assertImplemented($aggregationDSL, 'extended_stats', Aggregation\ExtendedStats::class, ['name']); |
|
40
|
|
|
$this->_assertImplemented($aggregationDSL, 'filter', Aggregation\Filter::class, ['name', new Exists('field')]); |
|
41
|
|
|
$this->_assertImplemented($aggregationDSL, 'filters', Aggregation\Filters::class, ['name']); |
|
42
|
|
|
$this->_assertImplemented($aggregationDSL, 'geo_distance', Aggregation\GeoDistance::class, ['name', 'field', 'origin']); |
|
43
|
|
|
$this->_assertImplemented($aggregationDSL, 'geohash_grid', Aggregation\GeohashGrid::class, ['name', 'field']); |
|
44
|
|
|
$this->_assertImplemented($aggregationDSL, 'global', Aggregation\GlobalAggregation::class, ['name']); |
|
45
|
|
|
$this->_assertImplemented($aggregationDSL, 'histogram', Aggregation\Histogram::class, ['name', 'field', 1]); |
|
46
|
|
|
$this->_assertImplemented($aggregationDSL, 'ipv4_range', Aggregation\IpRange::class, ['name', 'field']); |
|
47
|
|
|
$this->_assertImplemented($aggregationDSL, 'max', Aggregation\Max::class, ['name']); |
|
48
|
|
|
$this->_assertImplemented($aggregationDSL, 'min', Aggregation\Min::class, ['name']); |
|
49
|
|
|
$this->_assertImplemented($aggregationDSL, 'missing', Aggregation\Missing::class, ['name', 'field']); |
|
50
|
|
|
$this->_assertImplemented($aggregationDSL, 'nested', Aggregation\Nested::class, ['name', 'path']); |
|
51
|
|
|
$this->_assertImplemented($aggregationDSL, 'percentiles', Aggregation\Percentiles::class, ['name']); |
|
52
|
|
|
$this->_assertImplemented($aggregationDSL, 'percentiles_bucket', Aggregation\PercentilesBucket::class, ['name']); |
|
53
|
|
|
$this->_assertImplemented($aggregationDSL, 'range', Aggregation\Range::class, ['name']); |
|
54
|
|
|
$this->_assertImplemented($aggregationDSL, 'reverse_nested', Aggregation\ReverseNested::class, ['name']); |
|
55
|
|
|
$this->_assertImplemented($aggregationDSL, 'scripted_metric', Aggregation\ScriptedMetric::class, ['name', null, null, 'return state.durations', 'return states']); |
|
56
|
|
|
$this->_assertImplemented($aggregationDSL, 'significant_terms', Aggregation\SignificantTerms::class, ['name']); |
|
57
|
|
|
$this->_assertImplemented($aggregationDSL, 'stats', Aggregation\Stats::class, ['name']); |
|
58
|
|
|
$this->_assertImplemented($aggregationDSL, 'sum', Aggregation\Sum::class, ['name']); |
|
59
|
|
|
$this->_assertImplemented($aggregationDSL, 'terms', Aggregation\Terms::class, ['name']); |
|
60
|
|
|
$this->_assertImplemented($aggregationDSL, 'top_hits', Aggregation\TopHits::class, ['name']); |
|
61
|
|
|
$this->_assertImplemented($aggregationDSL, 'value_count', Aggregation\ValueCount::class, ['name', 'field']); |
|
62
|
|
|
$this->_assertImplemented($aggregationDSL, 'bucket_script', Aggregation\BucketScript::class, ['name']); |
|
63
|
|
|
$this->_assertImplemented($aggregationDSL, 'serial_diff', Aggregation\SerialDiff::class, ['name']); |
|
64
|
|
|
$this->_assertImplemented($aggregationDSL, 'avg_bucket', Aggregation\AvgBucket::class, ['name']); |
|
65
|
|
|
$this->_assertImplemented($aggregationDSL, 'sum_bucket', Aggregation\SumBucket::class, ['name']); |
|
66
|
|
|
$this->_assertImplemented($aggregationDSL, 'adjacency_matrix', Aggregation\AdjacencyMatrix::class, ['name']); |
|
67
|
|
|
$this->_assertImplemented($aggregationDSL, 'sampler', Aggregation\Sampler::class, ['name']); |
|
68
|
|
|
$this->_assertImplemented($aggregationDSL, 'diversified_sampler', Aggregation\DiversifiedSampler::class, ['name']); |
|
69
|
|
|
$this->_assertImplemented($aggregationDSL, 'weighted_avg', Aggregation\WeightedAvg::class, ['name']); |
|
70
|
|
|
} |
|
71
|
|
|
|
|
72
|
|
|
/** |
|
73
|
|
|
* @group unit |
|
74
|
|
|
* @group legacy |
|
75
|
|
|
*/ |
|
76
|
|
|
public function testLegacyInterface(): void |
|
77
|
|
|
{ |
|
78
|
|
|
$aggregationDSL = new DSL\Aggregation(); |
|
79
|
|
|
|
|
80
|
|
|
$this->expectDeprecation('Since ruflin/elastica 7.1.0: The "Elastica\QueryBuilder\DSL\Aggregation::global_agg()" method is deprecated, use "global()" instead. It will be removed in 8.0.'); |
|
81
|
|
|
$this->_assertImplemented($aggregationDSL, 'global_agg', Aggregation\GlobalAggregation::class, ['name']); |
|
82
|
|
|
} |
|
83
|
|
|
} |
|
84
|
|
|
|