Added tests and fix for lastInsertId() on camel case tables.

This commit is contained in:
Dmitry Khomutov 2018-03-01 17:18:59 +07:00
parent 626e1fe038
commit 9fc73577ca
No known key found for this signature in database
GPG key ID: EC19426474B37AAC
3 changed files with 27 additions and 15 deletions

View file

@ -51,7 +51,7 @@ class Database extends \PDO
public function lastInsertIdExtended($table = null) public function lastInsertIdExtended($table = null)
{ {
if ($table && self::POSTGRESQL_TYPE === $this->getAttribute(self::ATTR_DRIVER_NAME)) { if ($table && self::POSTGRESQL_TYPE === $this->getAttribute(self::ATTR_DRIVER_NAME)) {
return parent::lastInsertId($table . '_id_seq'); return parent::lastInsertId('"' . $table . '_id_seq"');
} }
return parent::lastInsertId(); return parent::lastInsertId();

View file

@ -33,7 +33,7 @@ class DatabaseMysqlTest extends \PHPUnit_Extensions_Database_TestCase
$this->connection = $this->createDefaultDBConnection($pdo, MYSQL_DBNAME); $this->connection = $this->createDefaultDBConnection($pdo, MYSQL_DBNAME);
$this->connection->getConnection()->query(' $this->connection->getConnection()->query('
CREATE TABLE IF NOT EXISTS `database_mysql_test` ( CREATE TABLE IF NOT EXISTS `databaseMysqlTest` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
`projectId` int(11) NOT NULL, `projectId` int(11) NOT NULL,
`branch` varchar(250) NOT NULL DEFAULT \'master\', `branch` varchar(250) NOT NULL DEFAULT \'master\',
@ -68,7 +68,7 @@ class DatabaseMysqlTest extends \PHPUnit_Extensions_Database_TestCase
protected function getDataSet() protected function getDataSet()
{ {
return $this->createArrayDataSet([ return $this->createArrayDataSet([
'database_mysql_test' => [[ 'databaseMysqlTest' => [[
'id' => 1, 'id' => 1,
'projectId' => 1, 'projectId' => 1,
'branch' => 'master', 'branch' => 'master',
@ -206,22 +206,28 @@ class DatabaseMysqlTest extends \PHPUnit_Extensions_Database_TestCase
{ {
$readConnection = Database::getConnection('read'); $readConnection = Database::getConnection('read');
$sql = 'SELECT * FROM {{database_mysql_test}} WHERE {{projectId}} = :projectId'; $sql = 'SELECT * FROM {{databaseMysqlTest}} WHERE {{projectId}} = :projectId';
$query = $readConnection->prepareCommon($sql); $query = $readConnection->prepareCommon($sql);
$query->bindValue(':projectId', 2); $query->bindValue(':projectId', 1);
$query->execute(); $query->execute();
$data = $query->fetchAll(\PDO::FETCH_ASSOC); $data = $query->fetchAll(\PDO::FETCH_ASSOC);
self::assertEquals(2, count($data)); self::assertEquals(1, count($data));
self::assertEquals([[
'id' => 1,
'projectId' => 1,
'branch' => 'master',
'createDate' => null,
]], $data);
} }
public function testLastInsertIdExtended() public function testLastInsertIdExtended()
{ {
$writeConnection = Database::getConnection('write'); $writeConnection = Database::getConnection('write');
$sql = 'INSERT INTO {{database_mysql_test}} ({{projectId}}) VALUES (3)'; $sql = 'INSERT INTO {{databaseMysqlTest}} ({{projectId}}) VALUES (3)';
$query = $writeConnection->prepareCommon($sql); $query = $writeConnection->prepareCommon($sql);
$query->execute(); $query->execute();

View file

@ -33,7 +33,7 @@ class DatabasePostgresqlTest extends \PHPUnit_Extensions_Database_TestCase
$this->connection = $this->createDefaultDBConnection($pdo, POSTGRESQL_DBNAME); $this->connection = $this->createDefaultDBConnection($pdo, POSTGRESQL_DBNAME);
$this->connection->getConnection()->query(' $this->connection->getConnection()->query('
CREATE TABLE IF NOT EXISTS "database_mysql_test" ( CREATE TABLE IF NOT EXISTS "databasePostgresqlTest" (
"id" SERIAL, "id" SERIAL,
"projectId" integer NOT NULL, "projectId" integer NOT NULL,
"branch" character varying(250) NOT NULL DEFAULT \'master\', "branch" character varying(250) NOT NULL DEFAULT \'master\',
@ -68,7 +68,7 @@ class DatabasePostgresqlTest extends \PHPUnit_Extensions_Database_TestCase
protected function getDataSet() protected function getDataSet()
{ {
return $this->createArrayDataSet([ return $this->createArrayDataSet([
'database_mysql_test' => [[ 'databasePostgresqlTest' => [[
'id' => 1, 'id' => 1,
'projectId' => 1, 'projectId' => 1,
'branch' => 'master', 'branch' => 'master',
@ -206,30 +206,36 @@ class DatabasePostgresqlTest extends \PHPUnit_Extensions_Database_TestCase
{ {
$readConnection = Database::getConnection('read'); $readConnection = Database::getConnection('read');
$sql = 'SELECT * FROM {{database_mysql_test}} WHERE {{projectId}} = :projectId'; $sql = 'SELECT * FROM {{databasePostgresqlTest}} WHERE {{projectId}} = :projectId';
$query = $readConnection->prepareCommon($sql); $query = $readConnection->prepareCommon($sql);
$query->bindValue(':projectId', 2); $query->bindValue(':projectId', 1);
$query->execute(); $query->execute();
$data = $query->fetchAll(\PDO::FETCH_ASSOC); $data = $query->fetchAll(\PDO::FETCH_ASSOC);
self::assertEquals(2, count($data)); self::assertEquals(1, count($data));
self::assertEquals([[
'id' => 1,
'projectId' => 1,
'branch' => 'master',
'createDate' => null,
]], $data);
} }
public function testLastInsertIdExtended() public function testLastInsertIdExtended()
{ {
$this->connection->getConnection()->query(' $this->connection->getConnection()->query('
ALTER SEQUENCE "database_mysql_test_id_seq" RESTART WITH 4; ALTER SEQUENCE "databasePostgresqlTest_id_seq" RESTART WITH 4;
'); ');
$writeConnection = Database::getConnection('write'); $writeConnection = Database::getConnection('write');
$sql = 'INSERT INTO {{database_mysql_test}} ({{projectId}}) VALUES (3)'; $sql = 'INSERT INTO {{databasePostgresqlTest}} ({{projectId}}) VALUES (3)';
$query = $writeConnection->prepareCommon($sql); $query = $writeConnection->prepareCommon($sql);
$query->execute(); $query->execute();
self::assertEquals(4, $writeConnection->lastInsertIdExtended('database_mysql_test')); self::assertEquals(4, $writeConnection->lastInsertIdExtended('databasePostgresqlTest'));
} }
} }