Passed
Branch ci_setup (6efa95)
by Mattia
12:10 queued 13s
created

MatchedPatchOperation::matchFor()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Cypress\PatchManager;
4
5
use Symfony\Component\OptionsResolver\OptionsResolver;
6
7
class MatchedPatchOperation
8
{
9
    /**
10
     * @var array
11
     */
12
    private array $operationData;
0 ignored issues
show
Coding Style introduced by
Private member variable "operationData" must contain a leading underscore
Loading history...
13
14
    /**
15
     * @var PatchOperationHandler
16
     */
17
    private PatchOperationHandler $handler;
0 ignored issues
show
Coding Style introduced by
Private member variable "handler" must contain a leading underscore
Loading history...
18
19
    /**
20
     * @param array $operationData
21
     * @param PatchOperationHandler $handler
22
     */
23 8
    private function __construct(array $operationData, PatchOperationHandler $handler)
24
    {
25 8
        $this->operationData = $operationData;
26 8
        $this->handler = $handler;
27 8
    }
28
29
    /**
30
     * @param array $operationData
31
     * @param PatchOperationHandler $handler
32
     * @return MatchedPatchOperation
33
     */
34 8
    public static function create(array $operationData, PatchOperationHandler $handler): MatchedPatchOperation
35
    {
36 8
        return new self($operationData, $handler);
37
    }
38
39
    /**
40
     * @param string $operationName
41
     * @return bool
42
     */
43 4
    public function matchFor(string $operationName): bool
44
    {
45 4
        return $operationName === $this->handler->getName();
46
    }
47
48
    /**
49
     * call handle on the handler
50
     *
51
     * @param Patchable $patchable
52
     */
53 4
    public function process(Patchable $patchable): void
54
    {
55 4
        $optionResolver = new OptionsResolver();
56 4
        $optionResolver->setRequired(['op']);
57 4
        $this->handler->configureOptions($optionResolver);
58 4
        $options = new OperationData($optionResolver->resolve($this->operationData));
59 3
        $this->handler->handle($patchable, $options);
60 3
    }
61
62
    /**
63
     * @return string
64
     */
65 3
    public function getOpName()
66
    {
67 3
        return $this->handler->getName();
68
    }
69
}
70