Passed
Push — master ( dbfb37...74a6ed )
by Frank
46s queued 13s
created

LightSwitch::turnOn()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 2
c 1
b 0
f 0
nc 2
nop 0
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 2
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace EventSauce\EventSourcing\Snapshotting\Tests;
6
7
use EventSauce\EventSourcing\AggregateRootBehaviour;
8
use EventSauce\EventSourcing\AggregateRootId;
9
use EventSauce\EventSourcing\Snapshotting\SnapshottingBehaviour;
10
use EventSauce\EventSourcing\Snapshotting\AggregateRootWithSnapshotting;
11
12
class LightSwitch implements AggregateRootWithSnapshotting
13
{
14
    use AggregateRootBehaviour;
15
    use SnapshottingBehaviour;
16
17
    const OFF = false;
18
    const ON = true;
19
20
    private $state = self::OFF;
21
22 1
    private function createSnapshotState()
23
    {
24 1
        return $this->state;
25
    }
26
27 1
    public function state(): bool
28
    {
29 1
        return $this->state;
30
    }
31
32 3
    public function turnOn(): void
33
    {
34 3
        if (self::OFF == $this->state) {
35 2
            $this->recordThat(LightSwitchWasFlipped::on());
36
        }
37 3
    }
38
39 3
    public function turnOff(): void
40
    {
41 3
        if (self::ON == $this->state) {
42 2
            $this->recordThat(LightSwitchWasFlipped::off());
43
        }
44 3
    }
45
46 4
    protected function applyLightSwitchWasFlipped(LightSwitchWasFlipped $event): void
47
    {
48 4
        $this->state = $event->state();
49 4
    }
50
51 1
    protected static function reconstituteFromSnapshotState(AggregateRootId $id, bool $state): AggregateRootWithSnapshotting
52
    {
53 1
        $lightSwitch = new static($id);
54 1
        $lightSwitch->state = $state;
55
56 1
        return $lightSwitch;
57
    }
58
}
59