Completed
Push — master ( 0ebf95...33622c )
by Damian
12s
created

SubsiteStateTest::testStateIsInjectable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
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