Passed
Push — master ( 05e846...9de07a )
by Jason
02:44
created

JobSectionTest::testCanEdit()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nc 1
nop 0
dl 0
loc 16
rs 9.9
c 0
b 0
f 0
1
<?php
2
3
namespace Dynamic\Jobs\Test;
4
5
use Dynamic\Jobs\Model\JobSection;
6
use SilverStripe\Core\Injector\Injector;
7
use SilverStripe\Dev\SapphireTest;
8
use SilverStripe\Forms\FieldList;
9
use SilverStripe\ORM\ValidationResult;
10
use SilverStripe\Security\Member;
11
12
/**
13
 * Class JobSectionTest
14
 * @package Dynamic\Jobs\Tests
15
 */
16
class JobSectionTest extends SapphireTest
17
{
18
    /**
19
     * @var string
20
     */
21
    protected static $fixture_file = '../fixtures.yml';
22
23
    /**
24
     * Tests getCMSFields
25
     */
26
    public function testGetCMSFields()
27
    {
28
        /** @var JobSection $object */
29
        $object = Injector::inst()->create(JobSection::class);
30
        $fields = $object->getCMSFields();
31
        $this->assertInstanceOf(FieldList::class, $fields);
32
    }
33
34
    /**
35
     * Tests validate()
36
     */
37
    public function testValidate()
38
    {
39
        /** @var JobSection $object */
40
        $object = Injector::inst()->create(JobSection::class);
41
        $valid = $object->validate();
42
43
        $this->assertInstanceOf(ValidationResult::class, $valid);
44
        $this->assertFalse($valid->isValid());
45
        $this->assertContains('Name is required before you can save', $valid->getMessages()[0]);
46
47
        $object->Title = 'title';
48
        $object->Name = 'name';
0 ignored issues
show
Bug Best Practice introduced by
The property Name does not exist on Dynamic\Jobs\Model\JobSection. Since you implemented __set, consider adding a @property annotation.
Loading history...
49
        $object->write();
50
        $valid = $object->validate();
51
52
        $this->assertInstanceOf(ValidationResult::class, $valid);
53
        $this->assertTrue($valid->isValid());
54
    }
55
56
    /**
57
     * Tests canCreate()
58
     */
59
    public function testCanCreate()
60
    {
61
        /** @var JobSection $object */
62
        $object = Injector::inst()->create(JobSection::class);
63
64
        $admin = $this->objFromFixture(Member::class, 'Admin');
65
        $create = $this->objFromFixture(Member::class, 'Create');
66
        $edit = $this->objFromFixture(Member::class, 'Edit');
67
        $delete = $this->objFromFixture(Member::class, 'Delete');
68
        $visitor = $this->objFromFixture(Member::class, 'Visitor');
69
70
        $this->assertTrue($object->canCreate($admin));
71
        $this->assertTrue($object->canCreate($create));
72
        $this->assertFalse($object->canCreate($edit));
73
        $this->assertFalse($object->canCreate($delete));
74
        $this->assertFalse($object->canCreate($visitor));
75
    }
76
77
    /**
78
     * Tests canEdit()
79
     */
80
    public function testCanEdit()
81
    {
82
        /** @var JobSection $object */
83
        $object = Injector::inst()->create(JobSection::class);
84
85
        $admin = $this->objFromFixture(Member::class, 'Admin');
86
        $create = $this->objFromFixture(Member::class, 'Create');
87
        $edit = $this->objFromFixture(Member::class, 'Edit');
88
        $delete = $this->objFromFixture(Member::class, 'Delete');
89
        $visitor = $this->objFromFixture(Member::class, 'Visitor');
90
91
        $this->assertTrue($object->canEdit($admin));
92
        $this->assertFalse($object->canEdit($create));
93
        $this->assertTrue($object->canEdit($edit));
94
        $this->assertFalse($object->canEdit($delete));
95
        $this->assertFalse($object->canEdit($visitor));
96
    }
97
98
    /**
99
     * Tests canDelete()
100
     */
101
    public function testCanDelete()
102
    {
103
        /** @var JobSection $object */
104
        $object = Injector::inst()->create(JobSection::class);
105
106
        $admin = $this->objFromFixture(Member::class, 'Admin');
107
        $create = $this->objFromFixture(Member::class, 'Create');
108
        $edit = $this->objFromFixture(Member::class, 'Edit');
109
        $delete = $this->objFromFixture(Member::class, 'Delete');
110
        $visitor = $this->objFromFixture(Member::class, 'Visitor');
111
112
        $this->assertTrue($object->canDelete($admin));
113
        $this->assertFalse($object->canDelete($create));
114
        $this->assertFalse($object->canDelete($edit));
115
        $this->assertTrue($object->canDelete($delete));
116
        $this->assertFalse($object->canDelete($visitor));
117
    }
118
119
    /**
120
     * Tests canView()
121
     */
122
    public function testCanView()
123
    {
124
        /** @var JobSection $object */
125
        $object = Injector::inst()->create(JobSection::class);
126
        $this->assertTrue($object->canView());
127
    }
128
}
129