summaryrefslogtreecommitdiff
path: root/vendor/ruflin/elastica/test/lib/Elastica/Test/Query/HasParentTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ruflin/elastica/test/lib/Elastica/Test/Query/HasParentTest.php')
-rw-r--r--vendor/ruflin/elastica/test/lib/Elastica/Test/Query/HasParentTest.php68
1 files changed, 63 insertions, 5 deletions
diff --git a/vendor/ruflin/elastica/test/lib/Elastica/Test/Query/HasParentTest.php b/vendor/ruflin/elastica/test/lib/Elastica/Test/Query/HasParentTest.php
index d417c887..31a89852 100644
--- a/vendor/ruflin/elastica/test/lib/Elastica/Test/Query/HasParentTest.php
+++ b/vendor/ruflin/elastica/test/lib/Elastica/Test/Query/HasParentTest.php
@@ -1,13 +1,19 @@
<?php
-
namespace Elastica\Test\Query;
+use Elastica\Document;
use Elastica\Query\HasParent;
+use Elastica\Query\Match;
use Elastica\Query\MatchAll;
+use Elastica\Search;
use Elastica\Test\Base as BaseTest;
+use Elastica\Type\Mapping;
class HasParentTest extends BaseTest
{
+ /**
+ * @group unit
+ */
public function testToArray()
{
$q = new MatchAll();
@@ -19,13 +25,16 @@ class HasParentTest extends BaseTest
$expectedArray = array(
'has_parent' => array(
'query' => $q->toArray(),
- 'type' => $type
- )
+ 'type' => $type,
+ ),
);
$this->assertEquals($expectedArray, $query->toArray());
}
+ /**
+ * @group unit
+ */
public function testSetScope()
{
$q = new MatchAll();
@@ -41,10 +50,59 @@ class HasParentTest extends BaseTest
'has_parent' => array(
'query' => $q->toArray(),
'type' => $type,
- '_scope' => $scope
- )
+ '_scope' => $scope,
+ ),
);
$this->assertEquals($expectedArray, $query->toArray());
}
+
+ /**
+ * @group functional
+ */
+ public function testHasParent()
+ {
+ $index = $this->_createIndex();
+
+ $shopType = $index->getType('shop');
+ $productType = $index->getType('product');
+ $mapping = new Mapping();
+ $mapping->setParent('shop');
+ $productType->setMapping($mapping);
+
+ $shopType->addDocuments(
+ array(
+ new Document('zurich', array('brand' => 'google')),
+ new Document('london', array('brand' => 'apple')),
+ )
+ );
+
+ $doc1 = new Document(1, array('device' => 'chromebook'));
+ $doc1->setParent('zurich');
+
+ $doc2 = new Document(2, array('device' => 'macmini'));
+ $doc2->setParent('london');
+
+ $productType->addDocument($doc1);
+ $productType->addDocument($doc2);
+
+ $index->refresh();
+
+ // All documents
+ $parentQuery = new HasParent(new MatchAll(), $shopType->getName());
+ $search = new Search($index->getClient());
+ $results = $search->search($parentQuery);
+ $this->assertEquals(2, $results->count());
+
+ $match = new Match();
+ $match->setField('brand', 'google');
+
+ $parentQuery = new HasParent($match, $shopType->getName());
+ $search = new Search($index->getClient());
+ $results = $search->search($parentQuery);
+ $this->assertEquals(1, $results->count());
+ $result = $results->current();
+ $data = $result->getData();
+ $this->assertEquals($data['device'], 'chromebook');
+ }
}