AbstractDriverTest.php 1.7 KB
Newer Older
1 2
<?php

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

use Doctrine\DBAL\Connection;
Sergei Morozov's avatar
Sergei Morozov committed
6
use Doctrine\DBAL\Driver;
Sergei Morozov's avatar
Sergei Morozov committed
7
use Doctrine\DBAL\Driver\Connection as DriverConnection;
8
use Doctrine\DBAL\Tests\FunctionalTestCase;
9

10
abstract class AbstractDriverTest extends FunctionalTestCase
11 12 13 14
{
    /**
     * The driver instance under test.
     *
Sergei Morozov's avatar
Sergei Morozov committed
15
     * @var Driver
16
     */
17
    protected $driver;
18

19
    protected function setUp(): void
20 21 22 23 24 25 26 27 28
    {
        parent::setUp();

        $this->driver = $this->createDriver();
    }

    /**
     * @group DBAL-1215
     */
29
    public function testConnectsWithoutDatabaseNameParameter(): void
30
    {
Sergei Morozov's avatar
Sergei Morozov committed
31
        $params = $this->connection->getParams();
32 33
        unset($params['dbname']);

Sergei Morozov's avatar
Sergei Morozov committed
34
        $user     = $params['user'] ?? null;
35
        $password = $params['password'] ?? null;
36 37 38

        $connection = $this->driver->connect($params, $user, $password);

Sergei Morozov's avatar
Sergei Morozov committed
39
        self::assertInstanceOf(DriverConnection::class, $connection);
40 41 42 43 44
    }

    /**
     * @group DBAL-1215
     */
45
    public function testReturnsDatabaseNameWithoutDatabaseNameParameter(): void
46
    {
Sergei Morozov's avatar
Sergei Morozov committed
47
        $params = $this->connection->getParams();
48 49 50 51
        unset($params['dbname']);

        $connection = new Connection(
            $params,
Sergei Morozov's avatar
Sergei Morozov committed
52 53 54
            $this->connection->getDriver(),
            $this->connection->getConfiguration(),
            $this->connection->getEventManager()
55 56
        );

57
        self::assertSame(
58
            static::getDatabaseNameForConnectionWithoutDatabaseNameParameter(),
59 60 61 62
            $this->driver->getDatabase($connection)
        );
    }

63
    abstract protected function createDriver(): Driver;
64

65
    protected static function getDatabaseNameForConnectionWithoutDatabaseNameParameter(): ?string
66 67 68 69
    {
        return null;
    }
}