OracleSessionInitTest.php 1.8 KB
Newer Older
1 2 3 4
<?php

namespace Doctrine\Tests\DBAL\Events;

Sergei Morozov's avatar
Sergei Morozov committed
5
use Doctrine\DBAL\Connection;
6
use Doctrine\DBAL\Event\ConnectionEventArgs;
jeroendedauw's avatar
jeroendedauw committed
7
use Doctrine\DBAL\Event\Listeners\OracleSessionInit;
8
use Doctrine\DBAL\Events;
jeroendedauw's avatar
jeroendedauw committed
9
use Doctrine\Tests\DbalTestCase;
10
use function sprintf;
11 12 13

class OracleSessionInitTest extends DbalTestCase
{
14
    public function testPostConnect() : void
15
    {
Sergei Morozov's avatar
Sergei Morozov committed
16
        $connectionMock = $this->createMock(Connection::class);
17 18 19 20 21 22 23 24 25 26
        $connectionMock->expects($this->once())
                       ->method('executeUpdate')
                       ->with($this->isType('string'));

        $eventArgs = new ConnectionEventArgs($connectionMock);

        $listener = new OracleSessionInit();
        $listener->postConnect($eventArgs);
    }

27 28 29 30
    /**
     * @group DBAL-1824
     * @dataProvider getPostConnectWithSessionParameterValuesData
     */
31
    public function testPostConnectQuotesSessionParameterValues(string $name, string $value) : void
32
    {
Sergei Morozov's avatar
Sergei Morozov committed
33
        $connectionMock = $this->getMockBuilder(Connection::class)
34 35 36 37 38 39 40 41
            ->disableOriginalConstructor()
            ->getMock();
        $connectionMock->expects($this->once())
            ->method('executeUpdate')
            ->with($this->stringContains(sprintf('%s = %s', $name, $value)));

        $eventArgs = new ConnectionEventArgs($connectionMock);

Sergei Morozov's avatar
Sergei Morozov committed
42
        $listener = new OracleSessionInit([$name => $value]);
43 44 45
        $listener->postConnect($eventArgs);
    }

46 47 48 49
    /**
     * @return array<int, array<int, mixed>>
     */
    public static function getPostConnectWithSessionParameterValuesData() : iterable
50
    {
Sergei Morozov's avatar
Sergei Morozov committed
51 52 53
        return [
            ['CURRENT_SCHEMA', 'foo'],
        ];
54 55
    }

56
    public function testGetSubscribedEvents() : void
57 58
    {
        $listener = new OracleSessionInit();
Sergei Morozov's avatar
Sergei Morozov committed
59
        self::assertEquals([Events::postConnect], $listener->getSubscribedEvents());
60
    }
61
}