Passed
Pull Request — master (#31)
by
unknown
02:26
created

Interval   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 61.11%

Importance

Changes 0
Metric Value
wmc 10
lcom 0
cbo 1
dl 0
loc 38
ccs 11
cts 18
cp 0.6111
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B validate() 0 25 10
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 1
    protected function validate(array $values)
18
    {
19 1
        if (!isset($values['length'])) {
20
            throw new \InvalidArgumentException('Interval must have a length.');
21
        }
22 1
        if (!isset($values['unit'])) {
23
            throw new \InvalidArgumentException('Interval must have a unit.');
24
        }
25 1
        if (!array_intersect(['days', 'months'], (array) $values['unit'])) {
26
            throw new \InvalidArgumentException('Interval unit must be days or months.');
27
        }
28 1
        switch ($values['unit']) {
29 1
            case 'days':
30
                if ($values['length'] < 7 || $values['length'] > 365) {
31
                    throw new \InvalidArgumentException('Interval length for days must be between 7 and 365, inclusive.');
32
                }
33
                break;
34
35 1
            case 'months':
36 1
                if ($values['length'] < 1 || $values['length'] > 12) {
37
                    throw new \InvalidArgumentException('Interval length for months must be between 1 and 12, inclusive.');
38
                }
39 1
                break;
40 1
        }
41 1
    }
42
}
43