Completed
Pull Request — master (#2)
by Matthew
02:24
created

BaseElementObjectTest::testGetPage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 22
rs 9.2
c 0
b 0
f 0
cc 1
eloc 14
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
        Director::set_current_page(null);
74
        $controller->popCurrent();
75
    }
76
77
    /**
78
     *
79
     */
80
    public function testCanView()
81
    {
82
        /** @var BaseElementObject $object */
83
        $object = Injector::inst()->create(BaseElementObject::class);
84
85
        /** @var Member $admin */
86
        $admin = $this->objFromFixture(Member::class, 'admin');
87
        $this->assertTrue($object->canView($admin));
88
89
        /** @var Member $siteowner */
90
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
91
        $this->assertTrue($object->canView($siteowner));
92
93
        /** @var Member $member */
94
        $member = $this->objFromFixture(Member::class, 'default');
95
        $this->assertFalse($object->canView($member));
96
    }
97
98
    /**
99
     *
100
     */
101
    public function testCanEdit()
102
    {
103
        /** @var BaseElementObject $object */
104
        $object = Injector::inst()->create(BaseElementObject::class);
105
106
        /** @var Member $admin */
107
        $admin = $this->objFromFixture(Member::class, 'admin');
108
        $this->assertTrue($object->canEdit($admin));
109
110
        /** @var Member $siteowner */
111
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
112
        $this->assertTrue($object->canEdit($siteowner));
113
114
        /** @var Member $member */
115
        $member = $this->objFromFixture(Member::class, 'default');
116
        $this->assertFalse($object->canEdit($member));
117
    }
118
119
    /**
120
     *
121
     */
122
    public function testCanDelete()
123
    {
124
        /** @var BaseElementObject $object */
125
        $object = Injector::inst()->create(BaseElementObject::class);
126
127
        /** @var Member $admin */
128
        $admin = $this->objFromFixture(Member::class, 'admin');
129
        $this->assertTrue($object->canDelete($admin));
130
131
        /** @var Member $siteowner */
132
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
133
        $this->assertTrue($object->canDelete($siteowner));
134
135
        /** @var Member $member */
136
        $member = $this->objFromFixture(Member::class, 'default');
137
        $this->assertFalse($object->canDelete($member));
138
    }
139
140
    /**
141
     *
142
     */
143
    public function testCanCreate()
144
    {
145
        /** @var BaseElementObject $object */
146
        $object = Injector::inst()->create(BaseElementObject::class);
147
148
        /** @var Member $admin */
149
        $admin = $this->objFromFixture(Member::class, 'admin');
150
        $this->assertTrue($object->canCreate($admin));
151
152
        /** @var Member $siteowner */
153
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
154
        $this->assertTrue($object->canCreate($siteowner));
155
156
        /** @var Member $member */
157
        $member = $this->objFromFixture(Member::class, 'default');
158
        $this->assertFalse($object->canCreate($member));
159
    }
160
}
161