diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/Elastic/QueryEngine/AggregationsTest.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/Elastic/QueryEngine/AggregationsTest.php | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/Elastic/QueryEngine/AggregationsTest.php b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/Elastic/QueryEngine/AggregationsTest.php new file mode 100644 index 00000000..cdcc45da --- /dev/null +++ b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Unit/Elastic/QueryEngine/AggregationsTest.php @@ -0,0 +1,115 @@ +<?php + +namespace SMW\Tests\Elastic\QueryEngine; + +use SMW\Elastic\QueryEngine\Aggregations; +use SMW\Elastic\QueryEngine\FieldMapper; + +/** + * @covers \SMW\Elastic\QueryEngine\Aggregations + * @group semantic-mediawiki + * + * @license GNU GPL v2+ + * @since 3.0 + * + * @author mwjames + */ +class AggregationsTest extends \PHPUnit_Framework_TestCase { + + public function testCanConstruct() { + + $this->assertInstanceOf( + Aggregations::class, + new Aggregations() + ); + } + + /** + * @dataProvider parametersProvider + */ + public function testResolve( $parameters, $expected ) { + + $instance = new Aggregations( $parameters ); + + $this->assertEquals( + $expected, + (string)$instance + ); + } + + public function parametersProvider() { + + $fieldMapper = new FieldMapper(); + + yield [ + [], + '[]' + ]; + + yield [ + $fieldMapper->aggs_terms( 'test_1', 'category' ), + '{"aggregations":{"test_1":{"terms":{"field":"category"}}}}' + ]; + + yield [ + $fieldMapper->aggs_terms( 'test_2', 'category', [ 'size' => 5 ] ), + '{"aggregations":{"test_2":{"terms":{"field":"category","size":5}}}}' + ]; + + yield [ + [ + $fieldMapper->aggs_terms( 'test_1', 'foo' ), + $fieldMapper->aggs_terms( 'test_2', 'bar' ) + ], + '{"aggregations":{"test_1":{"terms":{"field":"foo"}},"test_2":{"terms":{"field":"bar"}}}}' + ]; + + yield [ + [ + new Aggregations( $fieldMapper->aggs_terms( 'test_1', 'foo' ) ), + new Aggregations( $fieldMapper->aggs_terms( 'test_2', 'bar' ) ) + ], + '{"aggregations":{"test_1":{"terms":{"field":"foo"}},"test_2":{"terms":{"field":"bar"}}}}' + ]; + + // https://www.elastic.co/blog/intro-to-Aggregations-pt-2-sub-Aggregations + $aggs = new Aggregations( + $fieldMapper->aggs_terms( 'all_boroughs', 'borough' ) + ); + + $aggs->addSubAggregations( + new Aggregations( + $fieldMapper->aggs_terms( 'cause', 'contributing_factor_vehicle', [ 'size' => 3 ] ) + ) + ); + + yield [ + $aggs, + '{"aggregations":{"all_boroughs":{"terms":{"field":"borough"},"aggregations":{"cause":{"terms":{"field":"contributing_factor_vehicle","size":3}}}}}}' + ]; + + $cause = new Aggregations( + $fieldMapper->aggs_terms( 'cause', 'contributing_factor_vehicle', [ 'size' => 3 ] ) + ); + + $cause->addSubAggregations( + new Aggregations( + $fieldMapper->aggs_date_histogram( 'incidents_per_month', '@timestamp', 'month' ) + ) + ); + + $aggs = new Aggregations( + $fieldMapper->aggs_terms( 'all_boroughs', 'borough' ) + ); + + $aggs->addSubAggregations( + $cause + ); + + yield [ + $aggs, + '{"aggregations":{"all_boroughs":{"terms":{"field":"borough"},"aggregations":{"cause":{"terms":{"field":"contributing_factor_vehicle","size":3},"aggregations":{"incidents_per_month":{"date_histogram":{"field":"@timestamp","interval":"month"}}}}}}}}' + ]; + } + +} |