You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.1 KiB
112 lines
3.1 KiB
<?php |
|
/** |
|
* @link http://www.yiiframework.com/ |
|
* @copyright Copyright (c) 2008 Yii Software LLC |
|
* @license http://www.yiiframework.com/license/ |
|
*/ |
|
|
|
namespace yiiunit\framework\db\sqlite; |
|
|
|
/** |
|
* @group db |
|
* @group sqlite |
|
*/ |
|
class CommandTest extends \yiiunit\framework\db\CommandTest |
|
{ |
|
protected $driverName = 'sqlite'; |
|
|
|
public function testAutoQuoting() |
|
{ |
|
$db = $this->getConnection(false); |
|
|
|
$sql = 'SELECT [[id]], [[t.name]] FROM {{customer}} t'; |
|
$command = $db->createCommand($sql); |
|
$this->assertEquals('SELECT `id`, `t`.`name` FROM `customer` t', $command->sql); |
|
} |
|
|
|
/** |
|
* @dataProvider upsertProvider |
|
* @param array $firstData |
|
* @param array $secondData |
|
*/ |
|
public function testUpsert(array $firstData, array $secondData) |
|
{ |
|
if (version_compare($this->getConnection(false)->getServerVersion(), '3.8.3', '<')) { |
|
$this->markTestSkipped('SQLite < 3.8.3 does not support "WITH" keyword.'); |
|
return; |
|
} |
|
|
|
parent::testUpsert($firstData, $secondData); |
|
} |
|
|
|
public function testAddDropPrimaryKey() |
|
{ |
|
$this->markTestSkipped('SQLite does not support adding/dropping primary keys.'); |
|
} |
|
|
|
public function testAddDropForeignKey() |
|
{ |
|
$this->markTestSkipped('SQLite does not support adding/dropping foreign keys.'); |
|
} |
|
|
|
public function testAddDropUnique() |
|
{ |
|
$this->markTestSkipped('SQLite does not support adding/dropping unique constraints.'); |
|
} |
|
|
|
public function testAddDropCheck() |
|
{ |
|
$this->markTestSkipped('SQLite does not support adding/dropping check constraints.'); |
|
} |
|
|
|
public function testMultiStatementSupport() |
|
{ |
|
$db = $this->getConnection(false); |
|
$sql = <<<'SQL' |
|
DROP TABLE IF EXISTS {{T_multistatement}}; |
|
CREATE TABLE {{T_multistatement}} ( |
|
[[intcol]] INTEGER, |
|
[[textcol]] TEXT |
|
); |
|
INSERT INTO {{T_multistatement}} VALUES(41, :val1); |
|
INSERT INTO {{T_multistatement}} VALUES(42, :val2); |
|
SQL; |
|
$db->createCommand($sql, [ |
|
'val1' => 'foo', |
|
'val2' => 'bar', |
|
])->execute(); |
|
$this->assertSame([ |
|
[ |
|
'intcol' => '41', |
|
'textcol' => 'foo', |
|
], |
|
[ |
|
'intcol' => '42', |
|
'textcol' => 'bar', |
|
], |
|
], $db->createCommand('SELECT * FROM {{T_multistatement}}')->queryAll()); |
|
$sql = <<<'SQL' |
|
UPDATE {{T_multistatement}} SET [[intcol]] = :newInt WHERE [[textcol]] = :val1; |
|
DELETE FROM {{T_multistatement}} WHERE [[textcol]] = :val2; |
|
SELECT * FROM {{T_multistatement}} |
|
SQL; |
|
$this->assertSame([ |
|
[ |
|
'intcol' => '410', |
|
'textcol' => 'foo', |
|
], |
|
], $db->createCommand($sql, [ |
|
'newInt' => 410, |
|
'val1' => 'foo', |
|
'val2' => 'bar', |
|
])->queryAll()); |
|
} |
|
|
|
public function batchInsertSqlProvider() |
|
{ |
|
$parent = parent::batchInsertSqlProvider(); |
|
unset($parent['wrongBehavior']); // Produces SQL syntax error: General error: 1 near ".": syntax error |
|
|
|
return $parent; |
|
} |
|
}
|
|
|