Completed
Pull Request — master (#1867)
by
unknown
02:39
created

AggregationTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 4
dl 0
loc 71
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testType() 0 7 1
A testInterface() 0 40 1
A testLegacyInterface() 0 7 1
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