Completed
Pull Request — master (#2)
by Matthew
03:42
created

BaseElementObjectTest::testGetPage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 12
nc 1
nop 0
1
<?php
2
3
namespace Dynamic\BaseObject\Tests;
4
5
use Dynamic\BaseObject\Model\BaseElementObject;
6
use SilverStripe\CMS\Controllers\ContentController;
7
use SilverStripe\CMS\Model\SiteTree;
8
use SilverStripe\Control\Controller;
9
use SilverStripe\Control\Director;
10
use SilverStripe\Control\HTTPRequest;
11
use SilverStripe\Control\Session;
12
use SilverStripe\Core\Injector\Injector;
13
use SilverStripe\Dev\SapphireTest;
14
use SilverStripe\Forms\FieldList;
15
use SilverStripe\Security\Member;
16
17
class BaseElementObjectTest extends SapphireTest
18
{
19
    /**
20
     * @var string
21
     */
22
    protected static $fixture_file = '../fixtures.yml';
23
24
    /**
25
     *
26
     */
27
    public function testGetCMSFields()
28
    {
29
        /** @var BaseElementObject $object */
30
        $object = Injector::inst()->create(BaseElementObject::class);
31
        $fields = $object->getCMSFields();
32
        $this->assertInstanceOf(FieldList::class, $fields);
33
    }
34
35
    /**
36
     *
37
     */
38
    public function testValidateName()
39
    {
40
        /** @var BaseElementObject $object */
41
        $object = Injector::inst()->create(BaseElementObject::class);
42
        $valid = $object->validate()->isValid();
43
        $this->assertFalse($valid);
44
45
        $object->Name = 'Title';
46
        $valid = $object->validate()->isValid();
47
        $this->assertTrue($valid);
48
    }
49
50
    /**
51
     *
52
     */
53
    public function testGetPage()
54
    {
55
        /** @var BaseElementObject $object */
56
        $object = Injector::inst()->create(BaseElementObject::class);
57
        $this->assertNull($object->getPage());
58
        
59
        $request = new HTTPRequest('GET', '/');
60
        $session = new Session([]);
61
        $request->setSession($session);
62
        /** @var ContentController $controller */
63
        $controller = ContentController::create();
64
        $controller->setRequest($request);
65
        $controller->pushCurrent();
66
        $this->assertNull($object->getPage());
67
68
        /** @var SiteTree $page */
69
        $page = $this->objFromFixture(SiteTree::class, 'home');
70
        Director::set_current_page($page);
71
        $this->assertInstanceOf(SiteTree::class, $object->getPage());
72
    }
73
74
    /**
75
     *
76
     */
77
    public function testCanView()
78
    {
79
        /** @var BaseElementObject $object */
80
        $object = Injector::inst()->create(BaseElementObject::class);
81
82
        /** @var Member $admin */
83
        $admin = $this->objFromFixture(Member::class, 'admin');
84
        $this->assertTrue($object->canView($admin));
85
86
        /** @var Member $siteowner */
87
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
88
        $this->assertTrue($object->canView($siteowner));
89
90
        /** @var Member $member */
91
        $member = $this->objFromFixture(Member::class, 'default');
92
        $this->assertFalse($object->canView($member));
93
    }
94
95
    /**
96
     *
97
     */
98
    public function testCanEdit()
99
    {
100
        /** @var BaseElementObject $object */
101
        $object = Injector::inst()->create(BaseElementObject::class);
102
103
        /** @var Member $admin */
104
        $admin = $this->objFromFixture(Member::class, 'admin');
105
        $this->assertTrue($object->canEdit($admin));
106
107
        /** @var Member $siteowner */
108
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
109
        $this->assertTrue($object->canEdit($siteowner));
110
111
        /** @var Member $member */
112
        $member = $this->objFromFixture(Member::class, 'default');
113
        $this->assertFalse($object->canEdit($member));
114
    }
115
116
    /**
117
     *
118
     */
119
    public function testCanDelete()
120
    {
121
        /** @var BaseElementObject $object */
122
        $object = Injector::inst()->create(BaseElementObject::class);
123
124
        /** @var Member $admin */
125
        $admin = $this->objFromFixture(Member::class, 'admin');
126
        $this->assertTrue($object->canDelete($admin));
127
128
        /** @var Member $siteowner */
129
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
130
        $this->assertTrue($object->canDelete($siteowner));
131
132
        /** @var Member $member */
133
        $member = $this->objFromFixture(Member::class, 'default');
134
        $this->assertFalse($object->canDelete($member));
135
    }
136
137
    /**
138
     *
139
     */
140
    public function testCanCreate()
141
    {
142
        /** @var BaseElementObject $object */
143
        $object = Injector::inst()->create(BaseElementObject::class);
144
145
        /** @var Member $admin */
146
        $admin = $this->objFromFixture(Member::class, 'admin');
147
        $this->assertTrue($object->canCreate($admin));
148
149
        /** @var Member $siteowner */
150
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
151
        $this->assertTrue($object->canCreate($siteowner));
152
153
        /** @var Member $member */
154
        $member = $this->objFromFixture(Member::class, 'default');
155
        $this->assertFalse($object->canCreate($member));
156
    }
157
}
158