/** * Tests the HasParent Query. */ public function testHasParentQuery() { $this->specify('hasParent query was created', function () { $query = $this->queryBuilder->createHasParentQuery(); verify($query)->isInstanceOf('\\Nord\\Lumen\\Elasticsearch\\Search\\Query\\Joining\\HasParentQuery'); }); $this->specify('hasParent query format', function () { $query = $this->queryBuilder->createHasParentQuery(); $query->setType('doc')->setQuery($this->queryBuilder->createBoolQuery()->addMust($this->queryBuilder->createTermsQuery()->setField('id')->setValues(['ID1', 'ID2']))); $array = $query->toArray(); verify($array)->equals(['has_parent' => ['parent_type' => 'doc', 'query' => ['bool' => ['must' => [['terms' => ['id' => ['ID1', 'ID2']]]]]]]]); }); $this->specify('hasParent query format with score_mode', function () { $query = $this->queryBuilder->createHasParentQuery(); $query->setType('doc')->setQuery($this->queryBuilder->createBoolQuery()->addMust($this->queryBuilder->createTermsQuery()->setField('id')->setValues(['ID1', 'ID2'])))->setScoreMode(\Nord\Lumen\Elasticsearch\Search\Query\Joining\HasParentQuery::SCORE_MODE_SCORE); $array = $query->toArray(); verify($array)->equals(['has_parent' => ['parent_type' => 'doc', 'query' => ['bool' => ['must' => [['terms' => ['id' => ['ID1', 'ID2']]]]]], 'score_mode' => 'score']]); }); }