From 1cf08b55f1caf2789c934a1183cb118e24f0617b Mon Sep 17 00:00:00 2001 From: Niels Nijens <nijens.niels@gmail.com> Date: Tue, 19 Apr 2016 17:15:53 +0200 Subject: [PATCH] Add integration tests for FiltersAggregation Based on the documentation examples --- tests/Integration/SearchTest.php | 141 +++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 tests/Integration/SearchTest.php diff --git a/tests/Integration/SearchTest.php b/tests/Integration/SearchTest.php new file mode 100644 index 0000000..9573f57 --- /dev/null +++ b/tests/Integration/SearchTest.php @@ -0,0 +1,141 @@ +<?php + +/* + * This file is part of the ONGR package. + * + * (c) NFQ Technologies UAB <info@nfq.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace ONGR\ElasticsearchDSL\Tests\Aggregation\Integration; + +use ONGR\ElasticsearchDSL\Aggregation\FiltersAggregation; +use ONGR\ElasticsearchDSL\Aggregation\HistogramAggregation; +use ONGR\ElasticsearchDSL\Query\TermQuery; +use ONGR\ElasticsearchDSL\Search; +use PHPUnit_Framework_TestCase; + +/** + * Tests integration of examples from the documentation. + */ +class SearchTest extends PHPUnit_Framework_TestCase +{ + /** + * Tests integration of the FiltersAggregation named example from the documentation. + * + * @link https://github.com/ongr-io/ElasticsearchDSL/blob/master/docs/Aggregation/Filters.md#named-example + */ + public function testFiltersAggregationNamedExample() + { + $errorTermFilter = new TermQuery('body', 'error'); + $warningTermFilter = new TermQuery('body', 'warning'); + + $histogramAggregation = new HistogramAggregation('monthly', 'timestamp'); + $histogramAggregation->setInterval('1M'); + + $filterAggregation = new FiltersAggregation( + 'grades_stats', + [ + 'error' => $errorTermFilter, + 'warning' => $warningTermFilter, + ] + ); + $filterAggregation->addAggregation($histogramAggregation); + + $search = new Search(); + $search->addAggregation($filterAggregation); + + $this->assertSame( + [ + 'aggregations' => [ + 'grades_stats' => [ + 'filters' => [ + 'filters' => [ + 'error' => [ + 'term' => [ + 'body' => 'error', + ], + ], + 'warning' => [ + 'term' => [ + 'body' => 'warning', + ], + ], + ], + ], + 'aggregations' => [ + 'monthly' => [ + 'histogram' => [ + 'field' => 'timestamp', + 'interval' => '1M', + ], + ], + ], + ], + ], + ], + $search->toArray() + ); + } + + /** + * Tests integration of the FiltersAggregation anonymous example from the documentation. + * + * @link https://github.com/ongr-io/ElasticsearchDSL/blob/master/docs/Aggregation/Filters.md#anonymous-example + */ + public function testFiltersAggregationAnonymousExample() + { + $errorTermFilter = new TermQuery('body', 'error'); + $warningTermFilter = new TermQuery('body', 'warning'); + + $histogramAggregation = new HistogramAggregation('monthly', 'timestamp'); + $histogramAggregation->setInterval('1M'); + + $filterAggregation = new FiltersAggregation( + 'grades_stats', + [ + 'error' => $errorTermFilter, + 'warning' => $warningTermFilter, + ], + true + ); + $filterAggregation->addAggregation($histogramAggregation); + + $search = new Search(); + $search->addAggregation($filterAggregation); + + $this->assertSame( + [ + 'aggregations' => [ + 'grades_stats' => [ + 'filters' => [ + 'filters' => [ + [ + 'term' => [ + 'body' => 'error', + ], + ], + [ + 'term' => [ + 'body' => 'warning', + ], + ], + ], + ], + 'aggregations' => [ + 'monthly' => [ + 'histogram' => [ + 'field' => 'timestamp', + 'interval' => '1M', + ], + ], + ], + ], + ], + ], + $search->toArray() + ); + } +} -- GitLab