Failed Conditions
Pull Request — master (#7046)
by Gabriel
12:08
created

NamingStrategyTest::dataPropertyToColumnName()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 40
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 22
nc 1
nop 0
dl 0
loc 40
rs 8.8571
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Tests\ORM\Mapping;
6
7
use Doctrine\ORM\Mapping\Factory\DefaultNamingStrategy;
8
use Doctrine\ORM\Mapping\Factory\NamingStrategy;
9
use Doctrine\ORM\Mapping\Factory\UnderscoreNamingStrategy;
10
use Doctrine\Tests\ORM\Mapping\NamingStrategy\JoinColumnClassNamingStrategy;
11
use Doctrine\Tests\OrmTestCase;
12
13
/**
14
 * @group DDC-559
15
 */
16
class NamingStrategyTest extends OrmTestCase
17
{
18
    /**
19
     * @return DefaultNamingStrategy
20
     */
21
    private static function defaultNaming()
22
    {
23
        return new DefaultNamingStrategy();
24
    }
25
26
    /**
27
     * @return UnderscoreNamingStrategy
28
     */
29
    private static function underscoreNamingLower()
30
    {
31
        return new UnderscoreNamingStrategy(CASE_LOWER);
32
    }
33
34
    /**
35
     * @return UnderscoreNamingStrategy
36
     */
37
    private static function underscoreNamingUpper()
38
    {
39
        return new UnderscoreNamingStrategy(CASE_UPPER);
40
    }
41
42
    /**
43
     * Data Provider for NamingStrategy#classToTableName
44
     *
45
     * @return array
46
     */
47
    public static function dataClassToTableName()
48
    {
49
        return [
50
            // DefaultNamingStrategy
51
            [
52
                self::defaultNaming(),
53
                'SomeClassName',
54
                'SomeClassName',
55
            ],
56
            [
57
                self::defaultNaming(),
58
                'SomeClassName',
59
                '\SomeClassName',
60
            ],
61
            [
62
                self::defaultNaming(),
63
                'Name',
64
                '\Some\Class\Name',
65
            ],
66
67
            // UnderscoreNamingStrategy
68
            [
69
                self::underscoreNamingLower(),
70
                'some_class_name',
71
                '\Name\Space\SomeClassName',
72
            ],
73
            [
74
                self::underscoreNamingLower(),
75
                'name',
76
                '\Some\Class\Name',
77
            ],
78
            [
79
                self::underscoreNamingUpper(),
80
                'SOME_CLASS_NAME',
81
                '\Name\Space\SomeClassName',
82
            ],
83
            [
84
                self::underscoreNamingUpper(),
85
                'NAME',
86
                '\Some\Class\Name',
87
            ],
88
        ];
89
    }
90
91
    /**
92
     * @dataProvider dataClassToTableName
93
     */
94
    public function testClassToTableName(NamingStrategy $strategy, $expected, $className)
95
    {
96
        self::assertEquals($expected, $strategy->classToTableName($className));
97
    }
98
99
    /**
100
     * Data Provider for NamingStrategy#propertyToColumnName
101
     *
102
     * @return array
103
     */
104
    public static function dataPropertyToColumnName()
105
    {
106
        return [
107
            // DefaultNamingStrategy
108
            [
109
                self::defaultNaming(),
110
                'someProperty',
111
                'someProperty',
112
            ],
113
            [
114
                self::defaultNaming(),
115
                'SOME_PROPERTY',
116
                'SOME_PROPERTY',
117
            ],
118
            [
119
                self::defaultNaming(),
120
                'some_property',
121
                'some_property',
122
            ],
123
124
            // UnderscoreNamingStrategy
125
            [
126
                self::underscoreNamingLower(),
127
                'some_property',
128
                'someProperty',
129
            ],
130
            [
131
                self::underscoreNamingUpper(),
132
                'SOME_PROPERTY',
133
                'someProperty',
134
            ],
135
            [
136
                self::underscoreNamingUpper(),
137
                'SOME_PROPERTY',
138
                'some_property',
139
            ],
140
            [
141
                self::underscoreNamingUpper(),
142
                'SOME_PROPERTY',
143
                'SOME_PROPERTY',
144
            ],
145
        ];
146
    }
147
148
    /**
149
     * @dataProvider dataPropertyToColumnName
150
     *
151
     * @param string $expected
152
     * @param string $propertyName
153
     */
154
    public function testPropertyToColumnName(NamingStrategy $strategy, $expected, $propertyName)
155
    {
156
        self::assertEquals($expected, $strategy->propertyToColumnName($propertyName));
157
    }
158
159
    /**
160
     * Data Provider for NamingStrategy#referenceColumnName
161
     *
162
     * @return array
163
     */
164
    public static function dataReferenceColumnName()
165
    {
166
        return [
167
            // DefaultNamingStrategy
168
            [self::defaultNaming(), 'id'],
169
170
            // UnderscoreNamingStrategy
171
            [self::underscoreNamingLower(), 'id'],
172
            [self::underscoreNamingUpper(), 'ID'],
173
        ];
174
    }
175
176
    /**
177
     * @dataProvider dataReferenceColumnName
178
     *
179
     * @param string $expected
180
     */
181
    public function testReferenceColumnName(NamingStrategy $strategy, $expected)
182
    {
183
        self::assertEquals($expected, $strategy->referenceColumnName());
184
    }
185
186
    /**
187
     * Data Provider for NamingStrategy#joinColumnName
188
     *
189
     * @return array
190
     */
191
    public static function dataJoinColumnName()
192
    {
193
        return [
194
            // DefaultNamingStrategy
195
            [self::defaultNaming(), 'someColumn_id', 'someColumn', null],
196
            [self::defaultNaming(), 'some_column_id', 'some_column', null],
197
198
            // UnderscoreNamingStrategy
199
            [self::underscoreNamingLower(), 'some_column_id', 'someColumn', null],
200
            [self::underscoreNamingUpper(), 'SOME_COLUMN_ID', 'someColumn', null],
201
            // JoinColumnClassNamingStrategy
202
            [new JoinColumnClassNamingStrategy(), 'classname_someColumn_id', 'someColumn', 'Some\ClassName'],
203
            [new JoinColumnClassNamingStrategy(), 'classname_some_column_id', 'some_column', 'ClassName'],
204
        ];
205
    }
206
207
    /**
208
     * @dataProvider dataJoinColumnName
209
     *
210
     * @param string $expected
211
     * @param string $propertyName
212
     */
213
    public function testJoinColumnName(NamingStrategy $strategy, $expected, $propertyName, $className = null)
214
    {
215
        self::assertEquals($expected, $strategy->joinColumnName($propertyName, $className));
216
    }
217
218
    /**
219
     * Data Provider for NamingStrategy#joinTableName
220
     *
221
     * @return array
222
     */
223
    public static function dataJoinTableName()
224
    {
225
        return [
226
            // DefaultNamingStrategy
227
            [
228
                self::defaultNaming(),
229
                'someclassname_classname',
230
                'SomeClassName',
231
                'Some\ClassName',
232
                null,
233
            ],
234
            [
235
                self::defaultNaming(),
236
                'someclassname_classname',
237
                '\SomeClassName',
238
                'ClassName',
239
                null,
240
            ],
241
            [
242
                self::defaultNaming(),
243
                'name_classname',
244
                '\Some\Class\Name',
245
                'ClassName',
246
                null,
247
            ],
248
249
            // UnderscoreNamingStrategy
250
            [
251
                self::underscoreNamingLower(),
252
                'some_class_name_class_name',
253
                'SomeClassName',
254
                'Some\ClassName',
255
                null,
256
            ],
257
            [
258
                self::underscoreNamingLower(),
259
                'some_class_name_class_name',
260
                '\SomeClassName',
261
                'ClassName',
262
                null,
263
            ],
264
            [
265
                self::underscoreNamingLower(),
266
                'name_class_name',
267
                '\Some\Class\Name',
268
                'ClassName',
269
                null,
270
            ],
271
272
            [
273
                self::underscoreNamingUpper(),
274
                'SOME_CLASS_NAME_CLASS_NAME',
275
                'SomeClassName',
276
                'Some\ClassName',
277
                null,
278
            ],
279
            [
280
                self::underscoreNamingUpper(),
281
                'SOME_CLASS_NAME_CLASS_NAME',
282
                '\SomeClassName',
283
                'ClassName',
284
                null,
285
            ],
286
            [
287
                self::underscoreNamingUpper(),
288
                'NAME_CLASS_NAME',
289
                '\Some\Class\Name',
290
                'ClassName',
291
                null,
292
            ],
293
        ];
294
    }
295
296
    /**
297
     * @dataProvider dataJoinTableName
298
     *
299
     * @param string $expected
300
     * @param string $ownerEntity
301
     * @param string $associatedEntity
302
     * @param string $propertyName
303
     */
304
    public function testJoinTableName(NamingStrategy $strategy, $expected, $ownerEntity, $associatedEntity, $propertyName = null)
305
    {
306
        self::assertEquals($expected, $strategy->joinTableName($ownerEntity, $associatedEntity, $propertyName));
307
    }
308
309
    /**
310
     * Data Provider for NamingStrategy#joinKeyColumnName
311
     *
312
     * @return array
313
     */
314
    public static function dataJoinKeyColumnName()
315
    {
316
        return [
317
            // DefaultNamingStrategy
318
            [
319
                self::defaultNaming(),
320
                'someclassname_id',
321
                'SomeClassName',
322
                null,
323
                null,
324
            ],
325
            [
326
                self::defaultNaming(),
327
                'name_identifier',
328
                '\Some\Class\Name',
329
                'identifier',
330
                null,
331
            ],
332
333
            // UnderscoreNamingStrategy
334
            [
335
                self::underscoreNamingLower(),
336
                'some_class_name_id',
337
                'SomeClassName',
338
                null,
339
                null,
340
            ],
341
            [
342
                self::underscoreNamingLower(),
343
                'class_name_identifier',
344
                '\Some\Class\ClassName',
345
                'identifier',
346
                null,
347
            ],
348
349
            [
350
                self::underscoreNamingUpper(),
351
                'SOME_CLASS_NAME_ID',
352
                'SomeClassName',
353
                null,
354
                null,
355
            ],
356
            [
357
                self::underscoreNamingUpper(),
358
                'CLASS_NAME_IDENTIFIER',
359
                '\Some\Class\ClassName',
360
                'IDENTIFIER',
361
                null,
362
            ],
363
        ];
364
    }
365
366
    /**
367
     * @dataProvider dataJoinKeyColumnName
368
     *
369
     * @param string $expected
370
     * @param string $propertyEntityName
371
     * @param string $referencedColumnName
372
     * @param string $propertyName
373
     */
374
    public function testJoinKeyColumnName(NamingStrategy $strategy, $expected, $propertyEntityName, $referencedColumnName = null, $propertyName = null)
375
    {
376
        self::assertEquals($expected, $strategy->joinKeyColumnName($propertyEntityName, $referencedColumnName, $propertyName));
0 ignored issues
show
Unused Code introduced by
The call to Doctrine\ORM\Mapping\Fac...gy::joinKeyColumnName() has too many arguments starting with $propertyName. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

376
        self::assertEquals($expected, $strategy->/** @scrutinizer ignore-call */ joinKeyColumnName($propertyEntityName, $referencedColumnName, $propertyName));

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
377
    }
378
}
379