mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 06:37:55 +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.
 | 
						||
    }
 | 
						||
}
 |