Completed
Pull Request — master (#4)
by Matthew
03:10 queued 53s
created

BaseElementObjectTest::testCanDelete()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 16
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 7
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 testGetPage()
39
    {
40
        /** @var BaseElementObject $object */
41
        $object = Injector::inst()->create(BaseElementObject::class);
42
        $this->assertNull($object->getPage());
43
44
        $request = new HTTPRequest('GET', '/');
45
        $session = new Session([]);
46
        $request->setSession($session);
47
        /** @var ContentController $controller */
48
        $controller = ContentController::create();
49
        $controller->setRequest($request);
50
        $controller->pushCurrent();
51
        $this->assertNull($object->getPage());
52
53
        /** @var SiteTree $page */
54
        $page = $this->objFromFixture(SiteTree::class, 'home');
55
        Director::set_current_page($page);
56
        $this->assertInstanceOf(SiteTree::class, $object->getPage());
57
58
        Director::set_current_page(null);
59
        $controller->popCurrent();
60
    }
61
62
    /**
63
     *
64
     */
65
    public function testCanView()
66
    {
67
        /** @var BaseElementObject $object */
68
        $object = Injector::inst()->create(BaseElementObject::class);
69
70
        /** @var Member $admin */
71
        $admin = $this->objFromFixture(Member::class, 'admin');
72
        $this->assertTrue($object->canView($admin));
73
74
        /** @var Member $siteowner */
75
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
76
        $this->assertTrue($object->canView($siteowner));
77
78
        /** @var Member $member */
79
        $member = $this->objFromFixture(Member::class, 'default');
80
        $this->assertFalse($object->canView($member));
81
    }
82
83
    /**
84
     *
85
     */
86
    public function testCanEdit()
87
    {
88
        /** @var BaseElementObject $object */
89
        $object = Injector::inst()->create(BaseElementObject::class);
90
91
        /** @var Member $admin */
92
        $admin = $this->objFromFixture(Member::class, 'admin');
93
        $this->assertTrue($object->canEdit($admin));
94
95
        /** @var Member $siteowner */
96
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
97
        $this->assertTrue($object->canEdit($siteowner));
98
99
        /** @var Member $member */
100
        $member = $this->objFromFixture(Member::class, 'default');
101
        $this->assertFalse($object->canEdit($member));
102
    }
103
104
    /**
105
     *
106
     */
107
    public function testCanDelete()
108
    {
109
        /** @var BaseElementObject $object */
110
        $object = Injector::inst()->create(BaseElementObject::class);
111
112
        /** @var Member $admin */
113
        $admin = $this->objFromFixture(Member::class, 'admin');
114
        $this->assertTrue($object->canDelete($admin));
115
116
        /** @var Member $siteowner */
117
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
118
        $this->assertTrue($object->canDelete($siteowner));
119
120
        /** @var Member $member */
121
        $member = $this->objFromFixture(Member::class, 'default');
122
        $this->assertFalse($object->canDelete($member));
123
    }
124
125
    /**
126
     *
127
     */
128
    public function testCanCreate()
129
    {
130
        /** @var BaseElementObject $object */
131
        $object = Injector::inst()->create(BaseElementObject::class);
132
133
        /** @var Member $admin */
134
        $admin = $this->objFromFixture(Member::class, 'admin');
135
        $this->assertTrue($object->canCreate($admin));
136
137
        /** @var Member $siteowner */
138
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
139
        $this->assertTrue($object->canCreate($siteowner));
140
141
        /** @var Member $member */
142
        $member = $this->objFromFixture(Member::class, 'default');
143
        $this->assertFalse($object->canCreate($member));
144
    }
145
}
146