DmsDatabaseTest   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 96
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 37
dl 0
loc 96
rs 10
c 0
b 0
f 0
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetTables() 0 3 1
A testGetPhpName() 0 8 1
A getPhpNameData() 0 26 1
A testGetName() 0 3 1
A setUp() 0 22 3
1
<?php declare(strict_types=1);
2
3
namespace Janisbiz\LightOrm\Tests\Unit\Dms\MySQL\Generator\Dms;
4
5
use Janisbiz\LightOrm\Dms\MySQL\Generator\Dms\DmsColumn;
6
use Janisbiz\LightOrm\Dms\MySQL\Generator\Dms\DmsDatabase;
7
use Janisbiz\LightOrm\Dms\MySQL\Generator\Dms\DmsTable;
8
use PHPUnit\Framework\TestCase;
9
10
class DmsDatabaseTest extends TestCase
11
{
12
    const DATABASE_NAME = 'database_name_snake_case';
13
14
    /**
15
     * @var DmsTable[]
16
     */
17
    private $dmsTables = [];
18
19
    /**
20
     * @var DmsDatabase
21
     */
22
    private $dmsDatabase;
23
24
    public function setUp()
25
    {
26
        $dmsColumns = [];
27
        for ($i = 1; $i <= 3; $i++) {
28
            $dmsColumns[] = new DmsColumn(
29
                \sprintf('%s_%d', DmsColumnTest::COLUMN_NAME, $i),
30
                DmsColumnTest::COLUMN_TYPE,
31
                DmsColumnTest::COLUMN_NULLABLE,
32
                DmsColumnTest::COLUMN_KEY,
33
                DmsColumnTest::COLUMN_DEFAULT,
34
                DmsColumnTest::COLUMN_EXTRA
35
            );
36
        }
37
38
        for ($i = 1; $i <= 3; $i++) {
39
            $this->dmsTables[] = new DmsTable(
40
                \sprintf('%s_%d', DmsTableTest::TABLE_NAME, $i),
41
                $dmsColumns
42
            );
43
        }
44
45
        $this->dmsDatabase = new DmsDatabase(static::DATABASE_NAME, $this->dmsTables);
46
    }
47
48
    public function testGetName()
49
    {
50
        $this->assertEquals(static::DATABASE_NAME, $this->dmsDatabase->getName());
51
    }
52
53
    /**
54
     * @dataProvider getPhpNameData
55
     *
56
     * @param string $name
57
     * @param string $phpName
58
     */
59
    public function testGetPhpName(string $name, string $phpName)
60
    {
61
        $dmsDatabase = new DmsDatabase(
62
            $name,
63
            $this->dmsTables
64
        );
65
66
        $this->assertEquals($phpName, $dmsDatabase->getPhpName());
67
    }
68
69
    /**
70
     *
71
     * @return array
72
     */
73
    public function getPhpNameData()
74
    {
75
        return [
76
            [
77
                'name_snake_case',
78
                'NameSnakeCase',
79
            ],
80
            [
81
                'name__snake__case',
82
                'NameSnakeCase',
83
            ],
84
            [
85
                'name-snake-case',
86
                'NameSnakeCase',
87
            ],
88
            [
89
                'name1-snake2-case3',
90
                'Name1Snake2Case3',
91
            ],
92
            [
93
                '1name-2snake-3case',
94
                '1name2snake3case',
95
            ],
96
            [
97
                'name',
98
                'Name',
99
            ],
100
        ];
101
    }
102
103
    public function testGetTables()
104
    {
105
        $this->assertEquals(\count($this->dmsTables), \count($this->dmsDatabase->getDmsTables()));
106
    }
107
}
108