Enum   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 3
dl 0
loc 37
rs 10
c 0
b 0
f 0
ccs 10
cts 10
cp 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
A execute() 0 9 2
1
<?php declare(strict_types=1);
2
3
namespace Limoncello\Validation\Rules\Generic;
4
5
/**
6
 * Copyright 2015-2020 [email protected]
7
 *
8
 * Licensed under the Apache License, Version 2.0 (the "License");
9
 * you may not use this file except in compliance with the License.
10
 * You may obtain a copy of the License at
11
 *
12
 * http://www.apache.org/licenses/LICENSE-2.0
13
 *
14
 * Unless required by applicable law or agreed to in writing, software
15
 * distributed under the License is distributed on an "AS IS" BASIS,
16
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
 * See the License for the specific language governing permissions and
18
 * limitations under the License.
19
 */
20
21
use Limoncello\Validation\Contracts\Errors\ErrorCodes;
22
use Limoncello\Validation\Contracts\Execution\ContextInterface;
23
use Limoncello\Validation\I18n\Messages;
24
use Limoncello\Validation\Rules\ExecuteRule;
25
use function assert;
26
use function in_array;
27
28
/**
29
 * @package Limoncello\Validation
30
 */
31
final class Enum extends ExecuteRule
32
{
33
    /**
34
     * Property key.
35
     */
36
    private const PROPERTY_VALUES = self::PROPERTY_LAST + 1;
37
38
    /**
39
     * @param array $values
40
     */
41 1
    public function __construct(array $values)
42
    {
43 1
        assert(!empty($values));
44
45 1
        parent::__construct([
46 1
            static::PROPERTY_VALUES => $values,
47
        ]);
48
    }
49
50
    /**
51
     * @param mixed            $value
52
     * @param ContextInterface $context
53
     *
54
     * @return array
55
     *
56
     * @SuppressWarnings(PHPMD.StaticAccess)
57
     */
58 1
    public static function execute($value, ContextInterface $context): array
59
    {
60 1
        $values = $context->getProperties()->getProperty(static::PROPERTY_VALUES);
61 1
        $isOk   = in_array($value, $values);
62
63 1
        return $isOk === true ?
64 1
            static::createSuccessReply($value) :
65 1
            static::createErrorReply($context, $value, ErrorCodes::INVALID_VALUE, Messages::INVALID_VALUE, []);
66
    }
67
}
68