Passed
Pull Request — master (#166)
by
unknown
02:27
created

Group::validateArguments()   B

Complexity

Conditions 8
Paths 8

Size

Total Lines 26
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 72

Importance

Changes 0
Metric Value
cc 8
eloc 14
nc 8
nop 1
dl 0
loc 26
ccs 0
cts 15
cp 0
crap 72
rs 8.4444
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Cycle\Data\Reader\Filter;
6
7
use InvalidArgumentException;
8
use Yiisoft\Data\Reader\FilterHandlerInterface;
9
10
abstract class Group implements QueryBuilderFilter, FilterHandlerInterface
11
{
12
    protected function validateArguments(array $arguments): void
13
    {
14
        if (count($arguments) === 0) {
15
            throw new InvalidArgumentException('At least one argument should be provided.');
16
        }
17
18
        if (!is_array($arguments[0])) {
19
            throw new InvalidArgumentException('Sub filters is not an array.');
20
        }
21
22
        foreach ($arguments[0] as $subFilter) {
23
            if (!is_array($subFilter)) {
24
                throw new InvalidArgumentException('Sub filter is not an array.');
25
            }
26
27
            if (count($subFilter) === 0) {
28
                throw new InvalidArgumentException('At least operator should be provided.');
29
            }
30
31
            $operator = array_shift($subFilter);
32
            if (!is_string($operator)) {
33
                throw new InvalidArgumentException('Operator is not a string.');
34
            }
35
36
            if ($operator === '') {
37
                throw new InvalidArgumentException('The operator string cannot be empty.');
38
            }
39
        }
40
    }
41
}
42