Passed
Pull Request — master (#12)
by Wilmer
12:19
created

ConnectionTest::testQuoteColumnName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
nc 1
nop 0
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Db\Pgsql\Tests;
6
7
use Yiisoft\Db\Transactions\Transaction;
8
use Yiisoft\Db\Tests\ConnectionTest as AbstractConnectionTest;
9
10
class ConnectionTest extends AbstractConnectionTest
11
{
12
    protected ?string $driverName = 'pgsql';
13
14
    public function testConnection(): void
15
    {
16
        $this->assertIsObject($this->getConnection(true));
17
    }
18
19
    public function testQuoteValue(): void
20
    {
21
        $connection = $this->getConnection(false);
22
        $this->assertEquals(123, $connection->quoteValue(123));
23
        $this->assertEquals("'string'", $connection->quoteValue('string'));
24
        $this->assertEquals("'It''s interesting'", $connection->quoteValue("It's interesting"));
25
    }
26
27
    public function testQuoteTableName(): void
28
    {
29
        $connection = $this->getConnection(false);
30
        $this->assertEquals('"table"', $connection->quoteTableName('table'));
31
        $this->assertEquals('"table"', $connection->quoteTableName('"table"'));
32
        $this->assertEquals('"schema"."table"', $connection->quoteTableName('schema.table'));
33
        $this->assertEquals('"schema"."table"', $connection->quoteTableName('schema."table"'));
34
        $this->assertEquals('"schema"."table"', $connection->quoteTableName('"schema"."table"'));
35
        $this->assertEquals('{{table}}', $connection->quoteTableName('{{table}}'));
36
        $this->assertEquals('(table)', $connection->quoteTableName('(table)'));
37
    }
38
39
    public function testQuoteColumnName(): void
40
    {
41
        $connection = $this->getConnection(false);
42
        $this->assertEquals('"column"', $connection->quoteColumnName('column'));
43
        $this->assertEquals('"column"', $connection->quoteColumnName('"column"'));
44
        $this->assertEquals('[[column]]', $connection->quoteColumnName('[[column]]'));
45
        $this->assertEquals('{{column}}', $connection->quoteColumnName('{{column}}'));
46
        $this->assertEquals('(column)', $connection->quoteColumnName('(column)'));
47
48
        $this->assertEquals('"column"', $connection->quoteSql('[[column]]'));
49
        $this->assertEquals('"column"', $connection->quoteSql('{{column}}'));
50
    }
51
52
    public function testQuoteFullColumnName(): void
53
    {
54
        $connection = $this->getConnection(false, false);
55
        $this->assertEquals('"table"."column"', $connection->quoteColumnName('table.column'));
56
        $this->assertEquals('"table"."column"', $connection->quoteColumnName('table."column"'));
57
        $this->assertEquals('"table"."column"', $connection->quoteColumnName('"table".column'));
58
        $this->assertEquals('"table"."column"', $connection->quoteColumnName('"table"."column"'));
59
60
        $this->assertEquals('[[table.column]]', $connection->quoteColumnName('[[table.column]]'));
61
        $this->assertEquals('{{table}}."column"', $connection->quoteColumnName('{{table}}.column'));
62
        $this->assertEquals('{{table}}."column"', $connection->quoteColumnName('{{table}}."column"'));
63
        $this->assertEquals('{{table}}.[[column]]', $connection->quoteColumnName('{{table}}.[[column]]'));
64
        $this->assertEquals('{{%table}}."column"', $connection->quoteColumnName('{{%table}}.column'));
65
        $this->assertEquals('{{%table}}."column"', $connection->quoteColumnName('{{%table}}."column"'));
66
67
        $this->assertEquals('"table"."column"', $connection->quoteSql('[[table.column]]'));
68
        $this->assertEquals('"table"."column"', $connection->quoteSql('{{table}}.[[column]]'));
69
        $this->assertEquals('"table"."column"', $connection->quoteSql('{{table}}."column"'));
70
        $this->assertEquals('"table"."column"', $connection->quoteSql('{{%table}}.[[column]]'));
71
        $this->assertEquals('"table"."column"', $connection->quoteSql('{{%table}}."column"'));
72
    }
73
74
    public function testTransactionIsolation(): void
75
    {
76
        $connection = $this->getConnection(true);
77
78
        $transaction = $connection->beginTransaction();
79
        $transaction->setIsolationLevel(Transaction::READ_UNCOMMITTED);
80
        $transaction->commit();
81
82
        $transaction = $connection->beginTransaction();
83
        $transaction->setIsolationLevel(Transaction::READ_COMMITTED);
84
        $transaction->commit();
85
86
        $transaction = $connection->beginTransaction();
87
        $transaction->setIsolationLevel(Transaction::REPEATABLE_READ);
88
        $transaction->commit();
89
90
        $transaction = $connection->beginTransaction();
91
        $transaction->setIsolationLevel(Transaction::SERIALIZABLE);
92
        $transaction->commit();
93
94
        $transaction = $connection->beginTransaction();
95
        $transaction->setIsolationLevel(Transaction::SERIALIZABLE . ' READ ONLY DEFERRABLE');
96
        $transaction->commit();
97
98
        $this->assertTrue(true); // No error occurred – assert passed.
99
    }
100
}
101