/test/lib/Elastica/Test/Filter/IdsTest.php
PHP | 253 lines | 149 code | 50 blank | 54 comment | 2 complexity | 64439b91db3d3cd632764e7c6c395470 MD5 | raw file
- <?php
- namespace Elastica\Test\Filter;
- use Elastica\Document;
- use Elastica\Filter\Ids;
- use Elastica\Filter\Type;
- use Elastica\Query;
- use Elastica\Test\DeprecatedClassBase as BaseTest;
- class IdsTest extends BaseTest
- {
- /**
- * @group unit
- */
- public function testDeprecated()
- {
- $reflection = new \ReflectionClass(new Ids());
- $this->assertFileDeprecated($reflection->getFileName(), 'Deprecated: Filters are deprecated. Use queries in filter context. See https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-filters.html');
- }
- protected function _getIndexForTest()
- {
- $index = $this->_createIndex();
- // Add documents to first type
- $docs = [];
- for ($i = 1; $i < 100; ++$i) {
- $docs[] = new Document($i, ['name' => 'ruflin']);
- }
- $index->getType('helloworld1')->addDocuments($docs);
- // Add documents to second type
- $docs = [];
- for ($i = 1; $i < 100; ++$i) {
- $docs[] = new Document($i, ['name' => 'ruflin']);
- }
- // This is a special id that will only be in the second type
- $docs[] = new Document(101, ['name' => 'ruflin']);
- $index->getType('helloworld2')->addDocuments($docs);
- $index->optimize();
- $index->refresh();
- return $index;
- }
- protected function _getTypeForTest()
- {
- return $this->_getIndexForTest()->getType('helloworld1');
- }
- /**
- * @group functional
- */
- public function testSetIdsSearchSingle()
- {
- $filter = new Ids();
- $filter->setIds('1');
- $query = Query::create($filter);
- $resultSet = $this->_getTypeForTest()->search($query);
- $this->assertEquals(1, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testSetIdsSearchArray()
- {
- $filter = new Ids();
- $filter->setIds([1, 7, 13]);
- $query = Query::create($filter);
- $resultSet = $this->_getTypeForTest()->search($query);
- $this->assertEquals(3, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testAddIdsSearchSingle()
- {
- $filter = new Ids();
- $filter->addId('39');
- $query = Query::create($filter);
- $resultSet = $this->_getTypeForTest()->search($query);
- $this->assertEquals(1, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testAddIdsSearchSingleNotInType()
- {
- $filter = new Ids();
- $filter->addId('39');
- // Add an ID that is not in the index
- $filter->addId(104);
- $query = Query::create($filter);
- $resultSet = $this->_getTypeForTest()->search($query);
- $this->assertEquals(1, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testComboIdsSearchArray()
- {
- $filter = new Ids();
- $filter->setIds([1, 7, 13]);
- $filter->addId('39');
- $query = Query::create($filter);
- $resultSet = $this->_getTypeForTest()->search($query);
- $this->assertEquals(4, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testSetTypeSingleSearchSingle()
- {
- $filter = new Ids();
- $filter->setIds('1');
- $filter->setType('helloworld1');
- $query = Query::create($filter);
- $resultSet = $this->_getIndexForTest()->search($query);
- $this->assertEquals(1, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testSetTypeSingleSearchArray()
- {
- $filter = new Ids();
- $filter->setIds(['1', '2']);
- $filter->setType('helloworld1');
- $query = Query::create($filter);
- $resultSet = $this->_getIndexForTest()->search($query);
- $this->assertEquals(2, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testSetTypeSingleSearchSingleDocInOtherType()
- {
- $filter = new Ids();
- // Doc 4 is in the second type...
- $filter->setIds('101');
- $filter->setType('helloworld1');
- $query = Query::create($filter);
- $resultSet = $this->_getTypeForTest()->search($query);
- // ...therefore 0 results should be returned
- $this->assertEquals(0, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testSetTypeSingleSearchArrayDocInOtherType()
- {
- $filter = new Ids();
- // Doc 4 is in the second type...
- $filter->setIds(['1', '101']);
- $filter->setType('helloworld1');
- $query = Query::create($filter);
- $resultSet = $this->_getTypeForTest()->search($query);
- // ...therefore only 1 result should be returned
- $this->assertEquals(1, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testSetTypeArraySearchArray()
- {
- $filter = new Ids();
- $filter->setIds(['1', '4']);
- $filter->setType(['helloworld1', 'helloworld2']);
- $query = Query::create($filter);
- $resultSet = $this->_getIndexForTest()->search($query);
- $this->assertEquals(4, $resultSet->count());
- }
- /**
- * @group functional
- */
- public function testSetTypeArraySearchSingle()
- {
- $filter = new Ids();
- $filter->setIds('4');
- $filter->setType(['helloworld1', 'helloworld2']);
- $query = Query::create($filter);
- $resultSet = $this->_getIndexForTest()->search($query);
- $this->assertEquals(2, $resultSet->count());
- }
- /**
- * @group unit
- */
- public function testFilterTypeAndTypeCollision()
- {
- // This test ensures that Elastica\Type and Elastica\Filter\Type
- // do not collide when used together, which at one point
- // happened because of a use statement in Elastica\Filter\Ids
- // Test goal is to make sure a Fatal Error is not triggered
- $filterType = new Type();
- $filter = new Ids();
- }
- /**
- * @group unit
- */
- public function testAddType()
- {
- $type = $this->_getClient()->getIndex('indexname')->getType('typename');
- $filter = new Ids();
- $filter->addType('foo');
- $this->assertEquals(['foo'], $filter->getParam('type'));
- $filter->addType($type);
- $this->assertEquals(['foo', $type->getName()], $filter->getParam('type'));
- $returnValue = $filter->addType('bar');
- $this->assertInstanceOf('Elastica\Filter\Ids', $returnValue);
- }
- }