Completed
Push — master ( 793b46...adfa72 )
by Damian
12s
created

SubsiteStateTest::testWithState()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 17
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 10
nc 1
nop 0
1
<?php
2
3
namespace SilverStripe\Subsites\Tests\State;
4
5
use SilverStripe\Core\Injector\Injector;
6
use SilverStripe\Dev\SapphireTest;
7
use SilverStripe\Subsites\State\SubsiteState;
8
9
class SubsiteStateTest extends SapphireTest
10
{
11
    public function testStateIsInjectable()
12
    {
13
        $this->assertInstanceOf(SubsiteState::class, Injector::inst()->get(SubsiteState::class));
14
    }
15
16
    public function testGetSubsiteIdWasChanged()
17
    {
18
        $state = new SubsiteState;
19
20
        // Initial set, doesn't count as being changed
21
        $state->setSubsiteId(123);
22
        $this->assertFalse($state->getSubsiteIdWasChanged());
23
24
        // Subsequent set with the same value, doesn't count as being changed
25
        $state->setSubsiteId(123);
26
        $this->assertFalse($state->getSubsiteIdWasChanged());
27
28
        // Subsequent set with new value, counts as changed
29
        $state->setSubsiteId(234);
30
        $this->assertTrue($state->getSubsiteIdWasChanged());
31
    }
32
33
    public function testWithState()
34
    {
35
        $state = new SubsiteState;
36
        $state->setSubsiteId(123);
37
38
        $state->withState(function ($newState) use ($state) {
39
            $this->assertInstanceOf(SubsiteState::class, $newState);
40
41
            $this->assertNotSame($newState, $state);
42
43
            $newState->setSubsiteId(234);
44
            $this->assertSame(234, $newState->getSubsiteId());
45
            $this->assertSame(123, $state->getSubsiteId());
46
        });
47
48
        $this->assertSame(123, $state->getSubsiteId());
49
    }
50
}
51