|  |  |  | <?php
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace yiiunit\extensions\sphinx;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use yii\sphinx\DataReader;
 | 
					
						
							|  |  |  | use yii\db\Expression;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * @group sphinx
 | 
					
						
							|  |  |  |  */
 | 
					
						
							|  |  |  | class CommandTest extends SphinxTestCase
 | 
					
						
							|  |  |  | {
 | 
					
						
							|  |  |  | 	protected function tearDown()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$this->truncateRuntimeIndex('yii2_test_rt_index');
 | 
					
						
							|  |  |  | 		parent::tearDown();
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Tests :
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testConstruct()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection(false);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// null
 | 
					
						
							|  |  |  | 		$command = $db->createCommand();
 | 
					
						
							|  |  |  | 		$this->assertEquals(null, $command->sql);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// string
 | 
					
						
							|  |  |  | 		$sql = 'SELECT * FROM yii2_test_item_index';
 | 
					
						
							|  |  |  | 		$params = [
 | 
					
						
							|  |  |  | 			'name' => 'value'
 | 
					
						
							|  |  |  | 		];
 | 
					
						
							|  |  |  | 		$command = $db->createCommand($sql, $params);
 | 
					
						
							|  |  |  | 		$this->assertEquals($sql, $command->sql);
 | 
					
						
							|  |  |  | 		$this->assertEquals($params, $command->params);
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testGetSetSql()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection(false);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = 'SELECT * FROM yii2_test_item_index';
 | 
					
						
							|  |  |  | 		$command = $db->createCommand($sql);
 | 
					
						
							|  |  |  | 		$this->assertEquals($sql, $command->sql);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql2 = 'SELECT * FROM yii2_test_item_index';
 | 
					
						
							|  |  |  | 		$command->sql = $sql2;
 | 
					
						
							|  |  |  | 		$this->assertEquals($sql2, $command->sql);
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testAutoQuoting()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection(false);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = 'SELECT [[id]], [[t.name]] FROM {{yii2_test_item_index}} t';
 | 
					
						
							|  |  |  | 		$command = $db->createCommand($sql);
 | 
					
						
							|  |  |  | 		$this->assertEquals("SELECT `id`, `t`.`name` FROM `yii2_test_item_index` t", $command->sql);
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testPrepareCancel()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection(false);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand('SELECT * FROM yii2_test_item_index');
 | 
					
						
							|  |  |  | 		$this->assertEquals(null, $command->pdoStatement);
 | 
					
						
							|  |  |  | 		$command->prepare();
 | 
					
						
							|  |  |  | 		$this->assertNotEquals(null, $command->pdoStatement);
 | 
					
						
							|  |  |  | 		$command->cancel();
 | 
					
						
							|  |  |  | 		$this->assertEquals(null, $command->pdoStatement);
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testExecute()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = 'SELECT COUNT(*) FROM yii2_test_item_index WHERE MATCH(\'wooden\')';
 | 
					
						
							|  |  |  | 		$command = $db->createCommand($sql);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $command->queryScalar());
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand('bad SQL');
 | 
					
						
							|  |  |  | 		$this->setExpectedException('\yii\db\Exception');
 | 
					
						
							|  |  |  | 		$command->execute();
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testQuery()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// query
 | 
					
						
							|  |  |  | 		$sql = 'SELECT * FROM yii2_test_item_index';
 | 
					
						
							|  |  |  | 		$reader = $db->createCommand($sql)->query();
 | 
					
						
							|  |  |  | 		$this->assertTrue($reader instanceof DataReader);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// queryAll
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand('SELECT * FROM yii2_test_item_index')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals(2, count($rows));
 | 
					
						
							|  |  |  | 		$row = $rows[1];
 | 
					
						
							|  |  |  | 		$this->assertEquals(2, $row['id']);
 | 
					
						
							|  |  |  | 		$this->assertEquals(2, $row['category_id']);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand('SELECT * FROM yii2_test_item_index WHERE id=10')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals([], $rows);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// queryOne
 | 
					
						
							|  |  |  | 		$sql = 'SELECT * FROM yii2_test_item_index ORDER BY id ASC';
 | 
					
						
							|  |  |  | 		$row = $db->createCommand($sql)->queryOne();
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $row['id']);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $row['category_id']);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = 'SELECT * FROM yii2_test_item_index ORDER BY id ASC';
 | 
					
						
							|  |  |  | 		$command = $db->createCommand($sql);
 | 
					
						
							|  |  |  | 		$command->prepare();
 | 
					
						
							|  |  |  | 		$row = $command->queryOne();
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $row['id']);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $row['category_id']);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = 'SELECT * FROM yii2_test_item_index WHERE id=10';
 | 
					
						
							|  |  |  | 		$command = $db->createCommand($sql);
 | 
					
						
							|  |  |  | 		$this->assertFalse($command->queryOne());
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// queryColumn
 | 
					
						
							|  |  |  | 		$sql = 'SELECT * FROM yii2_test_item_index';
 | 
					
						
							|  |  |  | 		$column = $db->createCommand($sql)->queryColumn();
 | 
					
						
							|  |  |  | 		$this->assertEquals(range(1, 2), $column);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand('SELECT id FROM yii2_test_item_index WHERE id=10');
 | 
					
						
							|  |  |  | 		$this->assertEquals([], $command->queryColumn());
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// queryScalar
 | 
					
						
							|  |  |  | 		$sql = 'SELECT * FROM yii2_test_item_index ORDER BY id ASC';
 | 
					
						
							|  |  |  | 		$this->assertEquals($db->createCommand($sql)->queryScalar(), 1);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$sql = 'SELECT id FROM yii2_test_item_index ORDER BY id ASC';
 | 
					
						
							|  |  |  | 		$command = $db->createCommand($sql);
 | 
					
						
							|  |  |  | 		$command->prepare();
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $command->queryScalar());
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand('SELECT id FROM yii2_test_item_index WHERE id=10');
 | 
					
						
							|  |  |  | 		$this->assertFalse($command->queryScalar());
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand('bad SQL');
 | 
					
						
							|  |  |  | 		$this->setExpectedException('\yii\db\Exception');
 | 
					
						
							|  |  |  | 		$command->query();
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testQuery
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testInsert()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand()->insert('yii2_test_rt_index', [
 | 
					
						
							|  |  |  | 			'title' => 'Test title',
 | 
					
						
							|  |  |  | 			'content' => 'Test content',
 | 
					
						
							|  |  |  | 			'type_id' => 2,
 | 
					
						
							|  |  |  | 			'category' => [1, 2],
 | 
					
						
							|  |  |  | 			'id' => 1,
 | 
					
						
							|  |  |  | 		]);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $command->execute(), 'Unable to execute insert!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand('SELECT * FROM yii2_test_rt_index')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, count($rows), 'No row inserted!');
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testInsert
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testBatchInsert()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand()->batchInsert(
 | 
					
						
							|  |  |  | 			'yii2_test_rt_index',
 | 
					
						
							|  |  |  | 			[
 | 
					
						
							|  |  |  | 				'title',
 | 
					
						
							|  |  |  | 				'content',
 | 
					
						
							|  |  |  | 				'type_id',
 | 
					
						
							|  |  |  | 				'category',
 | 
					
						
							|  |  |  | 				'id',
 | 
					
						
							|  |  |  | 			],
 | 
					
						
							|  |  |  | 			[
 | 
					
						
							|  |  |  | 				[
 | 
					
						
							|  |  |  | 					'Test title 1',
 | 
					
						
							|  |  |  | 					'Test content 1',
 | 
					
						
							|  |  |  | 					1,
 | 
					
						
							|  |  |  | 					[1, 2],
 | 
					
						
							|  |  |  | 					1,
 | 
					
						
							|  |  |  | 				],
 | 
					
						
							|  |  |  | 				[
 | 
					
						
							|  |  |  | 					'Test title 2',
 | 
					
						
							|  |  |  | 					'Test content 2',
 | 
					
						
							|  |  |  | 					2,
 | 
					
						
							|  |  |  | 					[3, 4],
 | 
					
						
							|  |  |  | 					2,
 | 
					
						
							|  |  |  | 				],
 | 
					
						
							|  |  |  | 			]
 | 
					
						
							|  |  |  | 		);
 | 
					
						
							|  |  |  | 		$this->assertEquals(2, $command->execute(), 'Unable to execute batch insert!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand('SELECT * FROM yii2_test_rt_index')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals(2, count($rows), 'No rows inserted!');
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testInsert
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testReplace()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand()->replace('yii2_test_rt_index', [
 | 
					
						
							|  |  |  | 			'title' => 'Test title',
 | 
					
						
							|  |  |  | 			'content' => 'Test content',
 | 
					
						
							|  |  |  | 			'type_id' => 2,
 | 
					
						
							|  |  |  | 			'category' => [1, 2],
 | 
					
						
							|  |  |  | 			'id' => 1,
 | 
					
						
							|  |  |  | 		]);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $command->execute(), 'Unable to execute replace!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand('SELECT * FROM yii2_test_rt_index')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, count($rows), 'No row inserted!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$newTypeId = 5;
 | 
					
						
							|  |  |  | 		$command = $db->createCommand()->replace('yii2_test_rt_index',[
 | 
					
						
							|  |  |  | 			'type_id' => $newTypeId,
 | 
					
						
							|  |  |  | 			'category' => [3, 4],
 | 
					
						
							|  |  |  | 			'id' => 1,
 | 
					
						
							|  |  |  | 		]);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $command->execute(), 'Unable to update via replace!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		list($row) = $db->createCommand('SELECT * FROM yii2_test_rt_index')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals($newTypeId, $row['type_id'], 'Unable to update attribute value!');
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testReplace
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testBatchReplace()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand()->batchReplace(
 | 
					
						
							|  |  |  | 			'yii2_test_rt_index',
 | 
					
						
							|  |  |  | 			[
 | 
					
						
							|  |  |  | 				'title',
 | 
					
						
							|  |  |  | 				'content',
 | 
					
						
							|  |  |  | 				'type_id',
 | 
					
						
							|  |  |  | 				'category',
 | 
					
						
							|  |  |  | 				'id',
 | 
					
						
							|  |  |  | 			],
 | 
					
						
							|  |  |  | 			[
 | 
					
						
							|  |  |  | 				[
 | 
					
						
							|  |  |  | 					'Test title 1',
 | 
					
						
							|  |  |  | 					'Test content 1',
 | 
					
						
							|  |  |  | 					1,
 | 
					
						
							|  |  |  | 					[1, 2],
 | 
					
						
							|  |  |  | 					1,
 | 
					
						
							|  |  |  | 				],
 | 
					
						
							|  |  |  | 				[
 | 
					
						
							|  |  |  | 					'Test title 2',
 | 
					
						
							|  |  |  | 					'Test content 2',
 | 
					
						
							|  |  |  | 					2,
 | 
					
						
							|  |  |  | 					[3, 4],
 | 
					
						
							|  |  |  | 					2,
 | 
					
						
							|  |  |  | 				],
 | 
					
						
							|  |  |  | 			]
 | 
					
						
							|  |  |  | 		);
 | 
					
						
							|  |  |  | 		$this->assertEquals(2, $command->execute(), 'Unable to execute batch replace!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand('SELECT * FROM yii2_test_rt_index')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals(2, count($rows), 'No rows inserted!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$newTypeId = 5;
 | 
					
						
							|  |  |  | 		$command = $db->createCommand()->replace('yii2_test_rt_index',[
 | 
					
						
							|  |  |  | 			'type_id' => $newTypeId,
 | 
					
						
							|  |  |  | 			'id' => 1,
 | 
					
						
							|  |  |  | 		]);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $command->execute(), 'Unable to update via replace!');
 | 
					
						
							|  |  |  | 		list($row) = $db->createCommand('SELECT * FROM yii2_test_rt_index')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals($newTypeId, $row['type_id'], 'Unable to update attribute value!');
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testInsert
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testUpdate()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$db->createCommand()->insert('yii2_test_rt_index', [
 | 
					
						
							|  |  |  | 			'title' => 'Test title',
 | 
					
						
							|  |  |  | 			'content' => 'Test content',
 | 
					
						
							|  |  |  | 			'type_id' => 2,
 | 
					
						
							|  |  |  | 			'id' => 1,
 | 
					
						
							|  |  |  | 		])->execute();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$newTypeId = 5;
 | 
					
						
							|  |  |  | 		$command = $db->createCommand()->update(
 | 
					
						
							|  |  |  | 			'yii2_test_rt_index',
 | 
					
						
							|  |  |  | 			[
 | 
					
						
							|  |  |  | 				'type_id' => $newTypeId,
 | 
					
						
							|  |  |  | 				'category' => [3, 4],
 | 
					
						
							|  |  |  | 			],
 | 
					
						
							|  |  |  | 			'id = 1'
 | 
					
						
							|  |  |  | 		);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $command->execute(), 'Unable to execute update!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		list($row) = $db->createCommand('SELECT * FROM yii2_test_rt_index')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals($newTypeId, $row['type_id'], 'Unable to update attribute value!');
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testUpdate
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testUpdateWithOptions()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$db->createCommand()->insert('yii2_test_rt_index', [
 | 
					
						
							|  |  |  | 			'title' => 'Test title',
 | 
					
						
							|  |  |  | 			'content' => 'Test content',
 | 
					
						
							|  |  |  | 			'type_id' => 2,
 | 
					
						
							|  |  |  | 			'id' => 1,
 | 
					
						
							|  |  |  | 		])->execute();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$newTypeId = 5;
 | 
					
						
							|  |  |  | 		$command = $db->createCommand()->update(
 | 
					
						
							|  |  |  | 			'yii2_test_rt_index',
 | 
					
						
							|  |  |  | 			[
 | 
					
						
							|  |  |  | 				'type_id' => $newTypeId,
 | 
					
						
							|  |  |  | 				'non_existing_attribute' => 10,
 | 
					
						
							|  |  |  | 			],
 | 
					
						
							|  |  |  | 			'id = 1',
 | 
					
						
							|  |  |  | 			[],
 | 
					
						
							|  |  |  | 			[
 | 
					
						
							|  |  |  | 				'ignore_nonexistent_columns' => 1
 | 
					
						
							|  |  |  | 			]
 | 
					
						
							|  |  |  | 		);
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $command->execute(), 'Unable to execute update!');
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testInsert
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testDelete()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$db->createCommand()->insert('yii2_test_rt_index', [
 | 
					
						
							|  |  |  | 			'title' => 'Test title',
 | 
					
						
							|  |  |  | 			'content' => 'Test content',
 | 
					
						
							|  |  |  | 			'type_id' => 2,
 | 
					
						
							|  |  |  | 			'id' => 1,
 | 
					
						
							|  |  |  | 		])->execute();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$command = $db->createCommand()->delete('yii2_test_rt_index', 'id = 1');
 | 
					
						
							|  |  |  | 		$this->assertEquals(1, $command->execute(), 'Unable to execute delete!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand('SELECT * FROM yii2_test_rt_index')->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertEquals(0, count($rows), 'Unable to delete record!');
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testQuery
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testCallSnippets()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$query = 'pencil';
 | 
					
						
							|  |  |  | 		$source = 'Some data sentence about ' . $query;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand()->callSnippets('yii2_test_item_index', $source, $query)->queryColumn();
 | 
					
						
							|  |  |  | 		$this->assertNotEmpty($rows, 'Unable to call snippets!');
 | 
					
						
							|  |  |  | 		$this->assertContains('<b>' . $query . '</b>', $rows[0], 'Query not present in the snippet!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand()->callSnippets('yii2_test_item_index', [$source], $query)->queryColumn();
 | 
					
						
							|  |  |  | 		$this->assertNotEmpty($rows, 'Unable to call snippets for array source!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$options = [
 | 
					
						
							|  |  |  | 			'before_match' => '[',
 | 
					
						
							|  |  |  | 			'after_match' => ']',
 | 
					
						
							|  |  |  | 			'limit' => 20,
 | 
					
						
							|  |  |  | 		];
 | 
					
						
							|  |  |  | 		$snippet = $db->createCommand()->callSnippets('yii2_test_item_index', $source, $query, $options)->queryScalar();
 | 
					
						
							|  |  |  | 		$this->assertContains($options['before_match'] . $query . $options['after_match'], $snippet, 'Unable to apply options!');
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @depends testQuery
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testCallKeywords()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$db = $this->getConnection();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$text = 'table pencil';
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand()->callKeywords('yii2_test_item_index', $text)->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertNotEmpty($rows, 'Unable to call keywords!');
 | 
					
						
							|  |  |  | 		$this->assertArrayHasKey('tokenized', $rows[0], 'No tokenized keyword!');
 | 
					
						
							|  |  |  | 		$this->assertArrayHasKey('normalized', $rows[0], 'No normalized keyword!');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$text = 'table pencil';
 | 
					
						
							|  |  |  | 		$rows = $db->createCommand()->callKeywords('yii2_test_item_index', $text, true)->queryAll();
 | 
					
						
							|  |  |  | 		$this->assertNotEmpty($rows, 'Unable to call keywords with statistic!');
 | 
					
						
							|  |  |  | 		$this->assertArrayHasKey('docs', $rows[0], 'No docs!');
 | 
					
						
							|  |  |  | 		$this->assertArrayHasKey('hits', $rows[0], 'No hits!');
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | }
 |