Passed
Push — master ( 9aa859...1456e8 )
by Maurício
08:29 queued 12s
created

testFromArrayWithEmptyStatement()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 65
Code Lines 60

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 60
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 65
rs 8.8727

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpMyAdmin\Tests;
6
7
use PhpMyAdmin\SqlParser\Parser;
8
use PhpMyAdmin\StatementInfo;
9
use PHPUnit\Framework\TestCase;
10
11
/**
12
 * @covers \PhpMyAdmin\StatementInfo
13
 */
14
class StatementInfoTest extends TestCase
15
{
16
    public function testFromArray(): void
17
    {
18
        $parser = new Parser('SELECT * FROM `sakila`.`actor`');
19
        $statement = $parser->statements[0];
20
        $info = [
21
            'distinct' => false,
22
            'drop_database' => false,
23
            'group' => false,
24
            'having' => false,
25
            'is_affected' => false,
26
            'is_analyse' => false,
27
            'is_count' => false,
28
            'is_delete' => false,
29
            'is_explain' => false,
30
            'is_export' => false,
31
            'is_func' => false,
32
            'is_group' => false,
33
            'is_insert' => false,
34
            'is_maint' => false,
35
            'is_procedure' => false,
36
            'is_replace' => false,
37
            'is_select' => true,
38
            'is_show' => false,
39
            'is_subquery' => false,
40
            'join' => false,
41
            'limit' => false,
42
            'offset' => false,
43
            'order' => false,
44
            'querytype' => 'SELECT',
45
            'reload' => false,
46
            'select_from' => true,
47
            'union' => false,
48
            'parser' => $parser,
49
            'statement' => $statement,
50
            'select_tables' => [['actor', null]],
51
            'select_expr' => ['*'],
52
        ];
53
54
        $statementInfo = StatementInfo::fromArray($info);
55
56
        $this->assertFalse($statementInfo->distinct);
57
        $this->assertFalse($statementInfo->dropDatabase);
58
        $this->assertFalse($statementInfo->group);
59
        $this->assertFalse($statementInfo->having);
60
        $this->assertFalse($statementInfo->isAffected);
61
        $this->assertFalse($statementInfo->isAnalyse);
62
        $this->assertFalse($statementInfo->isCount);
63
        $this->assertFalse($statementInfo->isDelete);
64
        $this->assertFalse($statementInfo->isExplain);
65
        $this->assertFalse($statementInfo->isExport);
66
        $this->assertFalse($statementInfo->isFunction);
67
        $this->assertFalse($statementInfo->isGroup);
68
        $this->assertFalse($statementInfo->isInsert);
69
        $this->assertFalse($statementInfo->isMaint);
70
        $this->assertFalse($statementInfo->isProcedure);
71
        $this->assertFalse($statementInfo->isReplace);
72
        $this->assertTrue($statementInfo->isSelect);
73
        $this->assertFalse($statementInfo->isShow);
74
        $this->assertFalse($statementInfo->isSubquery);
75
        $this->assertFalse($statementInfo->join);
76
        $this->assertFalse($statementInfo->limit);
77
        $this->assertFalse($statementInfo->offset);
78
        $this->assertFalse($statementInfo->order);
79
        $this->assertSame('SELECT', $statementInfo->queryType);
80
        $this->assertFalse($statementInfo->reload);
81
        $this->assertTrue($statementInfo->selectFrom);
82
        $this->assertFalse($statementInfo->union);
83
        $this->assertNotNull($statementInfo->parser);
84
        $this->assertNotNull($statementInfo->statement);
85
        $this->assertNotEmpty($statementInfo->selectTables);
86
        $this->assertNotEmpty($statementInfo->selectExpression);
87
        $this->assertSame($info['parser'], $statementInfo->parser);
88
        $this->assertSame($info['statement'], $statementInfo->statement);
89
        $this->assertSame($info['select_tables'], $statementInfo->selectTables);
90
        $this->assertSame($info['select_expr'], $statementInfo->selectExpression);
91
    }
92
93
    public function testFromArrayWithEmptyStatement(): void
94
    {
95
        $info = [
96
            'distinct' => false,
97
            'drop_database' => false,
98
            'group' => false,
99
            'having' => false,
100
            'is_affected' => false,
101
            'is_analyse' => false,
102
            'is_count' => false,
103
            'is_delete' => false,
104
            'is_explain' => false,
105
            'is_export' => false,
106
            'is_func' => false,
107
            'is_group' => false,
108
            'is_insert' => false,
109
            'is_maint' => false,
110
            'is_procedure' => false,
111
            'is_replace' => false,
112
            'is_select' => false,
113
            'is_show' => false,
114
            'is_subquery' => false,
115
            'join' => false,
116
            'limit' => false,
117
            'offset' => false,
118
            'order' => false,
119
            'querytype' => false,
120
            'reload' => false,
121
            'select_from' => false,
122
            'union' => false,
123
        ];
124
125
        $statementInfo = StatementInfo::fromArray($info);
126
127
        $this->assertFalse($statementInfo->distinct);
128
        $this->assertFalse($statementInfo->dropDatabase);
129
        $this->assertFalse($statementInfo->group);
130
        $this->assertFalse($statementInfo->having);
131
        $this->assertFalse($statementInfo->isAffected);
132
        $this->assertFalse($statementInfo->isAnalyse);
133
        $this->assertFalse($statementInfo->isCount);
134
        $this->assertFalse($statementInfo->isDelete);
135
        $this->assertFalse($statementInfo->isExplain);
136
        $this->assertFalse($statementInfo->isExport);
137
        $this->assertFalse($statementInfo->isFunction);
138
        $this->assertFalse($statementInfo->isGroup);
139
        $this->assertFalse($statementInfo->isInsert);
140
        $this->assertFalse($statementInfo->isMaint);
141
        $this->assertFalse($statementInfo->isProcedure);
142
        $this->assertFalse($statementInfo->isReplace);
143
        $this->assertFalse($statementInfo->isSelect);
144
        $this->assertFalse($statementInfo->isShow);
145
        $this->assertFalse($statementInfo->isSubquery);
146
        $this->assertFalse($statementInfo->join);
147
        $this->assertFalse($statementInfo->limit);
148
        $this->assertFalse($statementInfo->offset);
149
        $this->assertFalse($statementInfo->order);
150
        $this->assertFalse($statementInfo->queryType);
151
        $this->assertFalse($statementInfo->reload);
152
        $this->assertFalse($statementInfo->selectFrom);
153
        $this->assertFalse($statementInfo->union);
154
        $this->assertNull($statementInfo->parser);
155
        $this->assertNull($statementInfo->statement);
156
        $this->assertEmpty($statementInfo->selectTables);
157
        $this->assertEmpty($statementInfo->selectExpression);
158
    }
159
}
160