DmsFactoryTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 31
c 1
b 0
f 0
dl 0
loc 51
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A testCreateDmsDatabase() 0 49 4
1
<?php declare(strict_types=1);
2
3
namespace Janisbiz\LightOrm\Tests\Unit\Dms\MySQL\Generator;
4
5
use Janisbiz\LightOrm\Dms\MySQL\Connection\ConnectionInterface;
6
use Janisbiz\LightOrm\Dms\MySQL\Generator\Dms\DmsDatabase;
7
use Janisbiz\LightOrm\Dms\MySQL\Generator\DmsFactory;
8
use Janisbiz\LightOrm\Generator\Dms\DmsDatabaseInterface;
9
use Janisbiz\LightOrm\Tests\Unit\Dms\MySQL\Generator\Dms\DmsColumnTest;
10
use Janisbiz\LightOrm\Tests\Unit\Dms\MySQL\Generator\Dms\DmsDatabaseTest;
11
use Janisbiz\LightOrm\Tests\Unit\Dms\MySQL\Generator\Dms\DmsTableTest;
12
use PHPUnit\Framework\TestCase;
13
14
class DmsFactoryTest extends TestCase
15
{
16
    public function testCreateDmsDatabase()
17
    {
18
        /** @var ConnectionInterface|\PHPUnit_Framework_MockObject_MockObject $connection */
19
        $connection = $this->createPartialMock(
20
            ConnectionInterface::class,
21
            [
22
                'query',
23
                'setSqlSafeUpdates',
24
                'unsetSqlSafeUpdates',
25
                'beginTransaction',
26
            ]
27
        );
28
29
        $connection
30
            ->expects($this->exactly(2))
31
            ->method('query')
32
            ->willReturnCallback(function ($query) {
33
                switch ($query) {
34
                    case 'SHOW TABLES':
35
                        return [
36
                            (object) [
37
                                \sprintf('Tables_in_%s', DmsDatabaseTest::DATABASE_NAME) => DmsTableTest::TABLE_NAME,
38
                            ],
39
                        ];
40
41
                    case false !== \preg_match('/^SHOW COLUMNS FROM (\w+)$/', $query):
42
                        $dmsColumns = [];
43
                        for ($i = 1; $i <= 3; $i++) {
44
                            $dmsColumns[] = (object) [
45
                                'Field' => DmsColumnTest::COLUMN_NAME,
46
                                'Type' => DmsColumnTest::COLUMN_TYPE,
47
                                'Null' => DmsColumnTest::COLUMN_NULLABLE,
48
                                'Key' => DmsColumnTest::COLUMN_KEY,
49
                                'Default' => DmsColumnTest::COLUMN_DEFAULT,
50
                                'Extra' => DmsColumnTest::COLUMN_EXTRA,
51
                            ];
52
                        }
53
54
                        return $dmsColumns;
55
                }
56
57
                throw new \Exception();
58
            })
59
        ;
60
61
        $dmsDatabase = (new DmsFactory())->createDmsDatabase(DmsDatabaseTest::DATABASE_NAME, $connection);
62
63
        $this->assertTrue($dmsDatabase instanceof DmsDatabaseInterface);
64
        $this->assertTrue($dmsDatabase instanceof DmsDatabase);
65
    }
66
}
67