Passed
Push — 2.x ( bef6c0...34f135 )
by Mikaël
03:54
created

EnumerationRule::exceptionMessageOnTestFailure()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 3
dl 0
loc 7
ccs 0
cts 0
cp 0
crap 6
rs 10
c 0
b 0
f 0
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 102
     */
18
    public function name()
19 102
    {
20 102
        return 'enumeration';
21 102
    }
22 102
23 102
    /**
24 102
     * @param string $parameterName
25 102
     * @param mixed $value
26 51
     * @param bool $itemType
27 102
     * @return string
28
     */
29
    public function testConditions($parameterName, $value, $itemType = false)
30
    {
31
        $test = '';
32
        if ($this->getRestrictionModel()) {
33
            $test = sprintf('!%s::%s($%s)', $this->getRestrictionModel()->getPackagedName(true), StructEnum::METHOD_VALUE_IS_VALID, $parameterName);
34
        }
35
        return $test;
36
    }
37
38
    /**
39
     * @param string $parameterName
40
     * @param mixed $value
41
     * @param bool $itemType
42
     * @return string
43
     */
44
    public function exceptionMessageOnTestFailure($parameterName, $value, $itemType = false)
45
    {
46
        $exceptionMessage = '';
47
        if ($this->getRestrictionModel()) {
48
            $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
        }
50
        return $exceptionMessage;
51
    }
52
53
    /**
54
     * @return Struct|null
55
     */
56
    protected function getRestrictionModel()
57
    {
58
        if (!$this->model) {
59
            $this->model = $this->getFile()->getRestrictionFromStructAttribute($this->getAttribute());
60
        }
61
        return $this->model;
62
    }
63
}
64