AbstractPostgreSQLDriverTest.php 3.26 KB
Newer Older
1 2
<?php

3
namespace Doctrine\DBAL\Tests\Driver;
4 5

use Doctrine\DBAL\Connection;
6
use Doctrine\DBAL\Driver;
Sergei Morozov's avatar
Sergei Morozov committed
7
use Doctrine\DBAL\Driver\AbstractPostgreSQLDriver;
8
use Doctrine\DBAL\Driver\ResultStatement;
9
use Doctrine\DBAL\Platforms\AbstractPlatform;
10
use Doctrine\DBAL\Platforms\PostgreSQL100Platform;
11
use Doctrine\DBAL\Platforms\PostgreSQL94Platform;
12
use Doctrine\DBAL\Schema\AbstractSchemaManager;
13 14 15 16
use Doctrine\DBAL\Schema\PostgreSqlSchemaManager;

class AbstractPostgreSQLDriverTest extends AbstractDriverTest
{
17
    public function testReturnsDatabaseName() : void
18 19 20 21
    {
        parent::testReturnsDatabaseName();

        $database = 'bloo';
Sergei Morozov's avatar
Sergei Morozov committed
22
        $params   = [
23 24
            'user'     => 'foo',
            'password' => 'bar',
Sergei Morozov's avatar
Sergei Morozov committed
25
        ];
26

27
        $statement = $this->createMock(ResultStatement::class);
28

29
        $statement->expects(self::once())
30
            ->method('fetchColumn')
31
            ->will(self::returnValue($database));
32 33 34

        $connection = $this->getConnectionMock();

35
        $connection->expects(self::once())
36
            ->method('getParams')
37
            ->will(self::returnValue($params));
38

39
        $connection->expects(self::once())
40
            ->method('query')
41
            ->will(self::returnValue($statement));
42

43
        self::assertSame($database, $this->driver->getDatabase($connection));
44 45
    }

46
    protected function createDriver() : Driver
47
    {
Sergei Morozov's avatar
Sergei Morozov committed
48
        return $this->getMockForAbstractClass(AbstractPostgreSQLDriver::class);
49 50
    }

51
    protected function createPlatform() : AbstractPlatform
52
    {
53
        return new PostgreSQL94Platform();
54 55
    }

56
    protected function createSchemaManager(Connection $connection) : AbstractSchemaManager
57 58 59 60
    {
        return new PostgreSqlSchemaManager($connection);
    }

61 62 63 64
    /**
     * {@inheritDoc}
     */
    protected function getDatabasePlatformsForVersions() : array
65
    {
Sergei Morozov's avatar
Sergei Morozov committed
66
        return [
67 68 69
            ['9.4', PostgreSQL94Platform::class],
            ['9.4.0', PostgreSQL94Platform::class],
            ['9.4.1', PostgreSQL94Platform::class],
Sergei Morozov's avatar
Sergei Morozov committed
70 71
            ['10', PostgreSQL100Platform::class],
        ];
72 73
    }

74 75 76 77
    /**
     * {@inheritDoc}
     */
    protected static function getExceptionConversionData() : array
78
    {
Sergei Morozov's avatar
Sergei Morozov committed
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
        return [
            self::EXCEPTION_CONNECTION => [
                [null, '7', 'SQLSTATE[08006]'],
            ],
            self::EXCEPTION_FOREIGN_KEY_CONSTRAINT_VIOLATION => [
                [null, '23503', null],
            ],
            self::EXCEPTION_INVALID_FIELD_NAME => [
                [null, '42703', null],
            ],
            self::EXCEPTION_NON_UNIQUE_FIELD_NAME => [
                [null, '42702', null],
            ],
            self::EXCEPTION_NOT_NULL_CONSTRAINT_VIOLATION => [
                [null, '23502', null],
            ],
            self::EXCEPTION_SYNTAX_ERROR => [
                [null, '42601', null],
            ],
            self::EXCEPTION_TABLE_EXISTS => [
                [null, '42P07', null],
            ],
            self::EXCEPTION_TABLE_NOT_FOUND => [
                [null, '42P01', null],
            ],
            self::EXCEPTION_UNIQUE_CONSTRAINT_VIOLATION => [
                [null, '23505', null],
            ],
            self::EXCEPTION_DEADLOCK => [
                [null, '40001', null],
                [null, '40P01', null],
            ],
        ];
112 113
    }
}