Completed
Push — master ( f7d62f...5e8002 )
by Matt
02:53
created

Interval::validate()   B

Complexity

Conditions 10
Paths 8

Size

Total Lines 27

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 19
CRAP Score 10.0125

Importance

Changes 0
Metric Value
dl 0
loc 27
ccs 19
cts 20
cp 0.95
rs 7.6666
c 0
b 0
f 0
cc 10
nc 8
nop 1
crap 10.0125

How to fix   Complexity   

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
namespace CommerceGuys\AuthNet\DataTypes;
4
5
class Interval extends BaseDataType
6
{
7
    protected $propertyMap = [
8
        'length',
9
        'unit',
10
    ];
11
12
    /**
13
     * Allows child classes to validate incoming values.
14
     *
15
     * @param array $values
16
     */
17 6
    protected function validate(array $values)
18
    {
19 6
        if (!isset($values['length'])) {
20 1
            throw new \InvalidArgumentException('Interval must have a length.');
21
        }
22 5
        if (!isset($values['unit'])) {
23 1
            throw new \InvalidArgumentException('Interval must have a unit.');
24
        }
25 4
        if (!array_intersect(['days', 'months'], (array) $values['unit'])) {
26 1
            throw new \InvalidArgumentException('Interval unit must be days or months.');
27
        }
28 3
        switch ($values['unit']) {
29 3
            case 'days':
30 1
                if ($values['length'] < 7 || $values['length'] > 365) {
31 1
                    $message = 'Interval length for days must be between 7 and 365, inclusive.';
32 1
                    throw new \InvalidArgumentException($message);
33
                }
34
                break;
35
36 2
            case 'months':
37 2
                if ($values['length'] < 1 || $values['length'] > 12) {
38 1
                    $message = 'Interval length for months must be between 1 and 12, inclusive.';
39 1
                    throw new \InvalidArgumentException($message);
40
                }
41 1
                break;
42 1
        }
43 1
    }
44
}
45