Completed
Push — feature/issue-165 ( d66719...7c61ef )
by Mikaël
29:34
created

EnumerationRule   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 54
ccs 19
cts 19
cp 1
rs 10
c 0
b 0
f 0
wmc 7

4 Methods

Rating   Name   Duplication   Size   Complexity  
A name() 0 3 1
A testConditions() 0 7 2
A getRestrictionModel() 0 6 2
A exceptionMessageOnTestFailure() 0 7 2
1
<?php
2
3
namespace WsdlToPhp\PackageGenerator\File\Validation;
4
5
use WsdlToPhp\PackageGenerator\File\StructEnum;
6
use WsdlToPhp\PackageGenerator\Model\Struct;
7
8
class EnumerationRule extends AbstractRule
9
{
10
    /**
11
     * @var Struct
12
     */
13
    protected $model;
14
15
    /**
16
     * @return string
17
     */
18 114
    public function name()
19
    {
20 114
        return 'enumeration';
21
    }
22
23
    /**
24
     * @param string $parameterName
25
     * @param mixed $value
26
     * @param bool $itemType
27
     * @return string
28
     */
29 114
    public function testConditions($parameterName, $value, $itemType = false)
30
    {
31 114
        $test = '';
32 114
        if ($this->getRestrictionModel()) {
33 114
            $test = sprintf('!%s::%s($%s)', $this->getRestrictionModel()->getPackagedName(true), StructEnum::METHOD_VALUE_IS_VALID, $parameterName);
34 57
        }
35 114
        return $test;
36
    }
37
38
    /**
39
     * @param string $parameterName
40
     * @param mixed $value
41
     * @param bool $itemType
42
     * @return string
43
     */
44 114
    public function exceptionMessageOnTestFailure($parameterName, $value, $itemType = false)
45
    {
46 114
        $exceptionMessage = '';
47 114
        if ($this->getRestrictionModel()) {
48 114
            $exceptionMessage = sprintf('sprintf(\'Invalid value(s) %%s, please use one of: %%s from enumeration class %2$s\', is_array($%1$s) ? implode(\', \', $%1$s) : var_export($%1$s, true), implode(\', \', %2$s::%3$s()))', $parameterName, $this->getRestrictionModel()->getPackagedName(true), StructEnum::METHOD_GET_VALID_VALUES);
49 57
        }
50 114
        return $exceptionMessage;
51
    }
52
53
    /**
54
     * @return Struct|null
55
     */
56 114
    protected function getRestrictionModel()
57
    {
58 114
        if (!$this->model) {
59 114
            $this->model = $this->getFile()->getRestrictionFromStructAttribute($this->getAttribute());
60 57
        }
61 114
        return $this->model;
62
    }
63
}
64