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

BaseElementObjectTest::testGetPage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 8
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\Director;
9
use SilverStripe\Core\Injector\Injector;
10
use SilverStripe\Dev\SapphireTest;
11
use SilverStripe\Forms\FieldList;
12
use SilverStripe\Security\Member;
13
14
class BaseElementObjectTest extends SapphireTest
15
{
16
    /**
17
     * @var string
18
     */
19
    protected static $fixture_file = '../fixtures.yml';
20
21
    /**
22
     *
23
     */
24
    public function testGetCMSFields()
25
    {
26
        /** @var BaseElementObject $object */
27
        $object = Injector::inst()->create(BaseElementObject::class);
28
        $fields = $object->getCMSFields();
29
        $this->assertInstanceOf(FieldList::class, $fields);
30
    }
31
32
    /**
33
     *
34
     */
35
    public function testValidateName()
36
    {
37
        /** @var BaseElementObject $object */
38
        $object = Injector::inst()->create(BaseElementObject::class);
39
        $valid = $object->validate()->isValid();
40
        $this->assertFalse($valid);
41
42
        $object->Name = 'Title';
43
        $valid = $object->validate()->isValid();
44
        $this->assertTrue($valid);
45
    }
46
47
    /**
48
     *
49
     */
50
    public function testGetPage()
51
    {
52
        /** @var BaseElementObject $object */
53
        $object = Injector::inst()->create(BaseElementObject::class);
54
        $this->assertNull($object->getPage());
55
56
        /** @var SiteTree $page */
57
        $page = $this->objFromFixture(SiteTree::class, 'home');
58
        Director::set_current_page($page);
59
        $this->assertInstanceOf(SiteTree::class, $object->getPage());
60
61
        $controller = new ContentController();
62
        Director::set_current_page($controller);
0 ignored issues
show
Bug introduced by
$controller of type SilverStripe\CMS\Controllers\ContentController is incompatible with the type SilverStripe\CMS\Model\SiteTree expected by parameter $page of SilverStripe\Control\Director::set_current_page(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

62
        Director::set_current_page(/** @scrutinizer ignore-type */ $controller);
Loading history...
63
        $this->assertNull($object->getPage());
64
    }
65
66
    /**
67
     *
68
     */
69
    public function testCanView()
70
    {
71
        /** @var BaseElementObject $object */
72
        $object = Injector::inst()->create(BaseElementObject::class);
73
74
        /** @var Member $admin */
75
        $admin = $this->objFromFixture(Member::class, 'admin');
76
        $this->assertTrue($object->canView($admin));
77
78
        /** @var Member $siteowner */
79
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
80
        $this->assertTrue($object->canView($siteowner));
81
82
        /** @var Member $member */
83
        $member = $this->objFromFixture(Member::class, 'default');
84
        $this->assertFalse($object->canView($member));
85
    }
86
87
    /**
88
     *
89
     */
90
    public function testCanEdit()
91
    {
92
        /** @var BaseElementObject $object */
93
        $object = Injector::inst()->create(BaseElementObject::class);
94
95
        /** @var Member $admin */
96
        $admin = $this->objFromFixture(Member::class, 'admin');
97
        $this->assertTrue($object->canEdit($admin));
98
99
        /** @var Member $siteowner */
100
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
101
        $this->assertTrue($object->canEdit($siteowner));
102
103
        /** @var Member $member */
104
        $member = $this->objFromFixture(Member::class, 'default');
105
        $this->assertFalse($object->canEdit($member));
106
    }
107
108
    /**
109
     *
110
     */
111
    public function testCanDelete()
112
    {
113
        /** @var BaseElementObject $object */
114
        $object = Injector::inst()->create(BaseElementObject::class);
115
116
        /** @var Member $admin */
117
        $admin = $this->objFromFixture(Member::class, 'admin');
118
        $this->assertTrue($object->canDelete($admin));
119
120
        /** @var Member $siteowner */
121
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
122
        $this->assertTrue($object->canDelete($siteowner));
123
124
        /** @var Member $member */
125
        $member = $this->objFromFixture(Member::class, 'default');
126
        $this->assertFalse($object->canDelete($member));
127
    }
128
129
    /**
130
     *
131
     */
132
    public function testCanCreate()
133
    {
134
        /** @var BaseElementObject $object */
135
        $object = Injector::inst()->create(BaseElementObject::class);
136
137
        /** @var Member $admin */
138
        $admin = $this->objFromFixture(Member::class, 'admin');
139
        $this->assertTrue($object->canCreate($admin));
140
141
        /** @var Member $siteowner */
142
        $siteowner = $this->objFromFixture(Member::class, 'site-owner');
143
        $this->assertTrue($object->canCreate($siteowner));
144
145
        /** @var Member $member */
146
        $member = $this->objFromFixture(Member::class, 'default');
147
        $this->assertFalse($object->canCreate($member));
148
    }
149
}
150