mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 04:37:42 +08:00
Add test resetSequence() for SQLite. (#19895)
* Add test `resetSequence()`. * add more test.
This commit is contained in:
@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
namespace yiiunit\framework\db\sqlite;
|
namespace yiiunit\framework\db\sqlite;
|
||||||
|
|
||||||
|
use yii\db\sqlite\Schema;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group db
|
* @group db
|
||||||
* @group sqlite
|
* @group sqlite
|
||||||
@ -109,4 +111,60 @@ SQL;
|
|||||||
|
|
||||||
return $parent;
|
return $parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testResetSequence()
|
||||||
|
{
|
||||||
|
$db = $this->getConnection();
|
||||||
|
|
||||||
|
if ($db->getTableSchema('reset_sequence', true) !== null) {
|
||||||
|
$db->createCommand()->dropTable('reset_sequence')->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
// create table reset_sequence
|
||||||
|
$db->createCommand()->createTable(
|
||||||
|
'reset_sequence',
|
||||||
|
[
|
||||||
|
'id' => Schema::TYPE_PK,
|
||||||
|
'description' => Schema::TYPE_TEXT,
|
||||||
|
]
|
||||||
|
)->execute();
|
||||||
|
|
||||||
|
// ensure auto increment is working
|
||||||
|
$db->createCommand()->insert('reset_sequence', ['description' => 'test'])->execute();
|
||||||
|
$this->assertEquals(1, $db->createCommand('SELECT MAX([[id]]) FROM {{reset_sequence}}')->queryScalar());
|
||||||
|
|
||||||
|
// remove all records
|
||||||
|
$db->createCommand()->delete('reset_sequence')->execute();
|
||||||
|
$this->assertEquals(0, $db->createCommand('SELECT COUNT(*) FROM {{reset_sequence}}')->queryScalar());
|
||||||
|
|
||||||
|
// counter should be reset to 1
|
||||||
|
$db->createCommand()->resetSequence('reset_sequence')->execute();
|
||||||
|
$db->createCommand()->insert('reset_sequence', ['description' => 'test'])->execute();
|
||||||
|
$this->assertEquals(1, $db->createCommand('SELECT COUNT(*) FROM {{reset_sequence}}')->queryScalar());
|
||||||
|
$this->assertEquals(1, $db->createCommand('SELECT MAX([[id]]) FROM {{reset_sequence}}')->queryScalar());
|
||||||
|
|
||||||
|
// counter should be reset to 5, so next record gets ID 5
|
||||||
|
$db->createCommand()->resetSequence('reset_sequence', 5)->execute();
|
||||||
|
$db->createCommand()->insert('reset_sequence', ['description' => 'test'])->execute();
|
||||||
|
$this->assertEquals(2, $db->createCommand('SELECT COUNT(*) FROM {{reset_sequence}}')->queryScalar());
|
||||||
|
$this->assertEquals(5, $db->createCommand('SELECT MAX([[id]]) FROM {{reset_sequence}}')->queryScalar());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testResetSequenceExceptionTableNoExist()
|
||||||
|
{
|
||||||
|
$this->expectException('yii\base\InvalidArgumentException');
|
||||||
|
$this->expectExceptionMessage('Table not found: no_exist_table');
|
||||||
|
|
||||||
|
$db = $this->getConnection();
|
||||||
|
$db->createCommand()->resetSequence('no_exist_table', 5)->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testResetSequenceExceptionSquenceNoExist()
|
||||||
|
{
|
||||||
|
$this->expectException('yii\base\InvalidArgumentException');
|
||||||
|
$this->expectExceptionMessage("There is not sequence associated with table 'type'.");
|
||||||
|
|
||||||
|
$db = $this->getConnection();
|
||||||
|
$db->createCommand()->resetSequence('type', 5)->execute();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user