<?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\Unit\DSL\Query; use ONGR\ElasticsearchDSL\Query\BoolQuery; use ONGR\ElasticsearchDSL\Query\NestedQuery; use ONGR\ElasticsearchDSL\Query\TermsQuery; use ONGR\ElasticsearchDSL\Query\TermQuery; class NestedQueryTest extends \PHPUnit_Framework_TestCase { /** * Data provider to testGetToArray. * * @return array */ public function getArrayDataProvider() { $query = [ 'terms' => [ 'foo' => 'bar', ], ]; return [ 'query_only' => [ 'product.sub_item', [], ['path' => 'product.sub_item', 'query' => $query], ], 'query_with_parameters' => [ 'product.sub_item', ['_cache' => true, '_name' => 'named_result'], [ 'path' => 'product.sub_item', 'query' => $query, '_cache' => true, '_name' => 'named_result', ], ], ]; } /** * Test for query toArray() method. * * @param string $path * @param array $parameters * @param array $expected * * @dataProvider getArrayDataProvider */ public function testToArray($path, $parameters, $expected) { $query = new TermsQuery('foo', 'bar'); $query = new NestedQuery($path, $query, $parameters); $result = $query->toArray(); $this->assertEquals($expected, $result); } /** * Test for toArray() in case bool with single clause given. */ public function testSingleBoolMust() { $bool = new BoolQuery(); $bool->add(new TermQuery('field1', 'value1')); $query = new NestedQuery('obj1', $bool); $expected = [ 'path' => 'obj1', 'query' => [ 'bool' => [ 'must' => [ [ 'term' => ['field1' => 'value1'], ], ], ], ], ]; $this->assertEquals($expected, $query->toArray()); } }