Passed
Pull Request — master (#2893)
by Šimon
12:53
created

filtersSequencesDataProvider()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 22
rs 9.2
cc 1
eloc 15
nc 1
nop 0
1
<?php
2
3
namespace Doctrine\Tests\DBAL\Schema;
4
5
use Doctrine\DBAL\Configuration;
6
use Doctrine\DBAL\Platforms\PostgreSQL100Platform;
7
use Doctrine\DBAL\Platforms\PostgreSqlPlatform;
8
use Doctrine\DBAL\Schema\PostgreSqlSchemaManager;
9
use Doctrine\DBAL\Schema\Sequence;
10
11
class PostgreSQLSchemaManagerTest extends \PHPUnit\Framework\TestCase
12
{
13
    /**
14
     * @var \Doctrine\DBAL\Schema\PostgreSQLSchemaManager
15
     */
16
    private $schemaManager;
17
18
    /**
19
     * @var \Doctrine\DBAL\Connection|\PHPUnit_Framework_MockObject_MockObject
20
     */
21
    private $connection;
22
23
    private function setupConnectionAndManager(string $platformClass) : void
24
    {
25
        $driverMock = $this->createMock('Doctrine\DBAL\Driver');
26
        $platform   = $this->createMock($platformClass);
27
28
        $this->connection = $this->getMockBuilder('Doctrine\DBAL\Connection')
29
            ->setConstructorArgs([['platform' => $platform], $driverMock])
30
            ->getMock();
31
32
        $this->schemaManager = new PostgreSqlSchemaManager($this->connection, $platform);
33
    }
34
35
    /**
36
     * @group DBAL-474
37
     * @dataProvider filtersSequencesDataProvider
38
     */
39
    public function testFiltersSequences(string $platformClass, array $sequencesData, int $fetchAllexpectationCount) : void
40
    {
41
        $this->setupConnectionAndManager($platformClass);
42
43
        $configuration = new Configuration();
44
        $configuration->setFilterSchemaAssetsExpression('/^schema/');
45
46
        $this->connection->expects($this->any())
47
            ->method('getConfiguration')
48
            ->will($this->returnValue($configuration));
49
50
        $this->connection->expects($this->at(0))
51
            ->method('fetchAll')
52
            ->will($this->returnValue($sequencesData));
53
54
        $this->connection->expects($this->at(1))
55
            ->method('fetchAll')
56
            ->will($this->returnValue([['min_value' => 1, 'increment_by' => 1]]));
57
58
        $this->connection->expects($this->at(2))
59
            ->method('fetchAll')
60
            ->will($this->returnValue([['min_value' => 2, 'increment_by' => 2]]));
61
62
        $this->connection->expects($this->exactly($fetchAllexpectationCount))
63
            ->method('fetchAll');
64
65
        self::assertEquals(
66
            [
67
                new Sequence('schema.foo', 2, 2),
68
                new Sequence('schema.bar', 1, 1),
69
            ],
70
            $this->schemaManager->listSequences('database')
71
        );
72
    }
73
74
    public function filtersSequencesDataProvider() : array
75
    {
76
        return [
77
            [
78
                'platform' => PostgreSqlPlatform::class,
79
                'sequencesData' => [
80
                    ['relname' => 'foo', 'schemaname' => 'schema'],
81
                    ['relname' => 'bar', 'schemaname' => 'schema'],
82
                    ['relname' => 'baz', 'schemaname' => ''],
83
                    ['relname' => 'bloo', 'schemaname' => 'bloo_schema'],
84
                ],
85
                'fetchAllexpectationCount' => 3
86
            ],
87
            [
88
                'platform' => PostgreSQL100Platform::class,
89
                'sequencesData' => [
90
                    ['relname' => 'foo', 'schemaname' => 'schema', 'min_value' => 2, 'increment_by' => 2],
91
                    ['relname' => 'bar', 'schemaname' => 'schema', 'min_value' => 1, 'increment_by' => 1],
92
                    ['relname' => 'baz', 'schemaname' => '', 'min_value' => 3, 'increment_by' => 3],
93
                    ['relname' => 'bloo', 'schemaname' => 'bloo_schema', 'min_value' => 4, 'increment_by' => 4],
94
                ],
95
                'fetchAllexpectationCount' => 1
96
            ]
97
        ];
98
    }
99
}
100