mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-22 21:22:40 +00:00
First battery of SQLite driver tests
This commit is contained in:
parent
7f7d0cd1e7
commit
95ee51563d
3 changed files with 76 additions and 2 deletions
73
tests/Db/SQLite3/TestDbDriverSQLite3.php
Normal file
73
tests/Db/SQLite3/TestDbDriverSQLite3.php
Normal file
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
namespace JKingWeb\NewsSync;
|
||||
|
||||
|
||||
class TestDbDriverSQLite3 extends \PHPUnit\Framework\TestCase {
|
||||
use Test\Tools;
|
||||
|
||||
protected $c;
|
||||
|
||||
function setUp() {
|
||||
$conf = new Conf();
|
||||
$conf->dbDriver = Db\SQLite3\Driver::class;
|
||||
$conf->dbSQLite3File = tempnam(sys_get_temp_dir(), 'ook');
|
||||
$this->data = new Test\RuntimeData($conf);
|
||||
$this->drv = new Db\SQLite3\Driver($this->data, true);
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
unset($this->drv);
|
||||
unlink($this->data->conf->dbSQLite3File);
|
||||
}
|
||||
|
||||
function testExecAValidStatement() {
|
||||
$this->assertTrue($this->drv->exec("CREATE TABLE test(id integer primary key)"));
|
||||
}
|
||||
|
||||
function testExecAnInvalidStatement() {
|
||||
$this->assertException("engineErrorGeneral", "Db");
|
||||
$this->drv->exec("And the meek shall inherit the earth...");
|
||||
}
|
||||
|
||||
function testExecMultipleStatements() {
|
||||
$this->assertTrue($this->drv->exec("CREATE TABLE test(id integer primary key); INSERT INTO test(id) values(2112)"));
|
||||
$ch = new \SQLite3($this->data->conf->dbSQLite3File);
|
||||
$this->assertEquals(2112, $ch->querySingle("SELECT id from test"));
|
||||
}
|
||||
|
||||
function testExecTimeout() {
|
||||
$ch = new \SQLite3($this->data->conf->dbSQLite3File);
|
||||
$ch->exec("BEGIN EXCLUSIVE TRANSACTION");
|
||||
$this->assertException("general", "Db", "ExceptionTimeout");
|
||||
$this->drv->exec("CREATE TABLE test(id integer primary key)");
|
||||
}
|
||||
|
||||
function testExecConstraintViolation() {
|
||||
$this->drv->exec("CREATE TABLE test(id integer not null)");
|
||||
$this->assertException("constraintViolation", "Db", "ExceptionInput");
|
||||
$this->drv->exec("INSERT INTO test(id) values(null)");
|
||||
}
|
||||
|
||||
function testValidQuery() {
|
||||
$this->assertInstanceOf(Db\SQLite3\Result::class, $this->drv->query("SELECT 1"));
|
||||
}
|
||||
|
||||
function testInvalidQuery() {
|
||||
$this->assertException("engineErrorGeneral", "Db");
|
||||
$this->drv->query("Apollo was astonished; Dionysus thought me mad");
|
||||
}
|
||||
|
||||
function testQueryTimeout() {
|
||||
$ch = new \SQLite3($this->data->conf->dbSQLite3File);
|
||||
$ch->exec("BEGIN EXCLUSIVE TRANSACTION");
|
||||
$this->assertException("general", "Db", "ExceptionTimeout");
|
||||
$this->drv->query("CREATE TABLE test(id integer primary key)");
|
||||
}
|
||||
|
||||
function testQueryConstraintViolation() {
|
||||
$this->drv->exec("CREATE TABLE test(id integer not null)");
|
||||
$this->assertException("constraintViolation", "Db", "ExceptionInput");
|
||||
$this->drv->query("INSERT INTO test(id) values(null)");
|
||||
}
|
||||
}
|
|
@ -61,7 +61,7 @@ class TestDbStatementSQLite3 extends \PHPUnit\Framework\TestCase {
|
|||
$nativeStatement = $this->c->prepare("SELECT ? as value");
|
||||
$this->assertException("paramTypeMissing", "Db");
|
||||
$s = new self::$imp($this->c, $nativeStatement, []);
|
||||
$s->runArray([1])->get();
|
||||
$s->runArray([1]);
|
||||
}
|
||||
|
||||
function testViolateConstraint() {
|
||||
|
@ -69,6 +69,6 @@ class TestDbStatementSQLite3 extends \PHPUnit\Framework\TestCase {
|
|||
$nativeStatement = $this->c->prepare("INSERT INTO test(id) values(?)");
|
||||
$s = new self::$imp($this->c, $nativeStatement, ["int"]);
|
||||
$this->assertException("constraintViolation", "Db", "ExceptionInput");
|
||||
$s->runArray([null])->get();
|
||||
$s->runArray([null]);
|
||||
}
|
||||
}
|
|
@ -31,6 +31,7 @@
|
|||
<testsuite name="SQLite3 database driver">
|
||||
<file>Db/SQLite3/TestDbResultSQLite3.php</file>
|
||||
<file>Db/SQLite3/TestDbStatementSQLite3.php</file>
|
||||
<file>Db/SQLite3/TestDbDriverSQLite3.php</file>
|
||||
</testsuite>
|
||||
|
||||
</phpunit>
|
Loading…
Reference in a new issue