ProviderState::setDefaultPlainTextState()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 2
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 2
1
<?php
2
3
namespace SmartGamma\Behat\PactExtension\Infrastructure\ProviderState;
4
5
class ProviderState implements ProviderStateInterface
6
{
7
    /**
8
     * @var array
9
     */
10
    private $injectors = [];
11
12
    /**
13
     * @var array
14
     */
15
    private $plainTextState = [];
16
17
    /**
18
     * @var string
19
     */
20
    private $defaultPlainTextState;
21
22
    /**
23
     * @param string $providerName
24
     *
25
     * @return string
26
     */
27
    public function getStateDescription(string $providerName): string
28
    {
29
        if (isset($this->injectors[$providerName])) {
30
            /** @var InjectorStateDTO $injector */
31
            $injector = $this->injectors[$providerName][0];
32
            $given    = 'Create '
33
                . $injector->getEntityName()
34
                . $injector->getEntityDescription()
35
                . ':'
36
                . \json_encode($injector->getParameters());
37
38
            return $given;
39
        }
40
41
        if (isset($this->plainTextState[$providerName])) {
42
            $given = $this->plainTextState [$providerName];
43
44
            return $given;
45
        }
46
47
        return $this->defaultPlainTextState;
48
    }
49
50
    public function addInjectorState(InjectorStateDTO $injectorStateDTO)
51
    {
52
        $this->injectors[$injectorStateDTO->getProviderName()][] = $injectorStateDTO;
53
    }
54
55
    public function setDefaultPlainTextState(string $text)
56
    {
57
        $this->defaultPlainTextState = $text;
58
    }
59
60
    public function setPlainTextState(PlainTextStateDTO $textStateDTO)
61
    {
62
        $this->plainTextState[$textStateDTO->getProviderName()] = $textStateDTO->getStateDescription();
63
    }
64
65
    /**
66
     * In order to clear states defined in the multiple scenarios in with context
67
     */
68
    public function clearStates()
69
    {
70
        unset($this->injectors);
71
        unset($this->plainTextState);
72
        unset($this->defaultPlainTextState);
73
    }
74
}
75