mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-15 06:40:59 +08:00
107 lines
4.7 KiB
PHP
107 lines
4.7 KiB
PHP
<?php
|
||
/**
|
||
* @link http://www.yiiframework.com/
|
||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||
* @license http://www.yiiframework.com/license/
|
||
*/
|
||
|
||
namespace yiiunit\framework\db\pgsql;
|
||
|
||
use yii\db\Transaction;
|
||
|
||
/**
|
||
* @group db
|
||
* @group pgsql
|
||
*/
|
||
class ConnectionTest extends \yiiunit\framework\db\ConnectionTest
|
||
{
|
||
protected $driverName = 'pgsql';
|
||
|
||
public function testConnection()
|
||
{
|
||
$this->assertInternalType('object', $this->getConnection(true));
|
||
}
|
||
|
||
public function testQuoteValue()
|
||
{
|
||
$connection = $this->getConnection(false);
|
||
$this->assertEquals(123, $connection->quoteValue(123));
|
||
$this->assertEquals("'string'", $connection->quoteValue('string'));
|
||
$this->assertEquals("'It''s interesting'", $connection->quoteValue("It's interesting"));
|
||
}
|
||
|
||
public function testQuoteTableName()
|
||
{
|
||
$connection = $this->getConnection(false);
|
||
$this->assertEquals('"table"', $connection->quoteTableName('table'));
|
||
$this->assertEquals('"table"', $connection->quoteTableName('"table"'));
|
||
$this->assertEquals('"schema"."table"', $connection->quoteTableName('schema.table'));
|
||
$this->assertEquals('"schema"."table"', $connection->quoteTableName('schema."table"'));
|
||
$this->assertEquals('"schema"."table"', $connection->quoteTableName('"schema"."table"'));
|
||
$this->assertEquals('{{table}}', $connection->quoteTableName('{{table}}'));
|
||
$this->assertEquals('(table)', $connection->quoteTableName('(table)'));
|
||
}
|
||
|
||
public function testQuoteColumnName()
|
||
{
|
||
$connection = $this->getConnection(false);
|
||
$this->assertEquals('"column"', $connection->quoteColumnName('column'));
|
||
$this->assertEquals('"column"', $connection->quoteColumnName('"column"'));
|
||
$this->assertEquals('[[column]]', $connection->quoteColumnName('[[column]]'));
|
||
$this->assertEquals('{{column}}', $connection->quoteColumnName('{{column}}'));
|
||
$this->assertEquals('(column)', $connection->quoteColumnName('(column)'));
|
||
|
||
$this->assertEquals('"column"', $connection->quoteSql('[[column]]'));
|
||
$this->assertEquals('"column"', $connection->quoteSql('{{column}}'));
|
||
}
|
||
|
||
public function testQuoteFullColumnName()
|
||
{
|
||
$connection = $this->getConnection(false, false);
|
||
$this->assertEquals('"table"."column"', $connection->quoteColumnName('table.column'));
|
||
$this->assertEquals('"table"."column"', $connection->quoteColumnName('table."column"'));
|
||
$this->assertEquals('"table"."column"', $connection->quoteColumnName('"table".column'));
|
||
$this->assertEquals('"table"."column"', $connection->quoteColumnName('"table"."column"'));
|
||
|
||
$this->assertEquals('[[table.column]]', $connection->quoteColumnName('[[table.column]]'));
|
||
$this->assertEquals('{{table}}."column"', $connection->quoteColumnName('{{table}}.column'));
|
||
$this->assertEquals('{{table}}."column"', $connection->quoteColumnName('{{table}}."column"'));
|
||
$this->assertEquals('{{table}}.[[column]]', $connection->quoteColumnName('{{table}}.[[column]]'));
|
||
$this->assertEquals('{{%table}}."column"', $connection->quoteColumnName('{{%table}}.column'));
|
||
$this->assertEquals('{{%table}}."column"', $connection->quoteColumnName('{{%table}}."column"'));
|
||
|
||
$this->assertEquals('"table"."column"', $connection->quoteSql('[[table.column]]'));
|
||
$this->assertEquals('"table"."column"', $connection->quoteSql('{{table}}.[[column]]'));
|
||
$this->assertEquals('"table"."column"', $connection->quoteSql('{{table}}."column"'));
|
||
$this->assertEquals('"table"."column"', $connection->quoteSql('{{%table}}.[[column]]'));
|
||
$this->assertEquals('"table"."column"', $connection->quoteSql('{{%table}}."column"'));
|
||
}
|
||
|
||
public function testTransactionIsolation()
|
||
{
|
||
$connection = $this->getConnection(true);
|
||
|
||
$transaction = $connection->beginTransaction();
|
||
$transaction->setIsolationLevel(Transaction::READ_UNCOMMITTED);
|
||
$transaction->commit();
|
||
|
||
$transaction = $connection->beginTransaction();
|
||
$transaction->setIsolationLevel(Transaction::READ_COMMITTED);
|
||
$transaction->commit();
|
||
|
||
$transaction = $connection->beginTransaction();
|
||
$transaction->setIsolationLevel(Transaction::REPEATABLE_READ);
|
||
$transaction->commit();
|
||
|
||
$transaction = $connection->beginTransaction();
|
||
$transaction->setIsolationLevel(Transaction::SERIALIZABLE);
|
||
$transaction->commit();
|
||
|
||
$transaction = $connection->beginTransaction();
|
||
$transaction->setIsolationLevel(Transaction::SERIALIZABLE . ' READ ONLY DEFERRABLE');
|
||
$transaction->commit();
|
||
|
||
$this->assertTrue(true); // No error occurred – assert passed.
|
||
}
|
||
}
|