JobSectionTest::testValidate()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nc 1
nop 0
dl 0
loc 17
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
        $manage = $this->objFromFixture(Member::class, 'Manager');
66
        $visitor = $this->objFromFixture(Member::class, 'Visitor');
67
68
        $this->assertTrue($object->canCreate($admin));
69
        $this->assertTrue($object->canCreate($manage));
70
        $this->assertFalse($object->canCreate($visitor));
71
    }
72
73
    /**
74
     * Tests canEdit()
75
     */
76
    public function testCanEdit()
77
    {
78
        /** @var JobSection $object */
79
        $object = Injector::inst()->create(JobSection::class);
80
81
        $admin = $this->objFromFixture(Member::class, 'Admin');
82
        $manage = $this->objFromFixture(Member::class, 'Manager');
83
        $visitor = $this->objFromFixture(Member::class, 'Visitor');
84
85
        $this->assertTrue($object->canEdit($admin));
86
        $this->assertTrue($object->canEdit($manage));
87
        $this->assertFalse($object->canEdit($visitor));
88
    }
89
90
    /**
91
     * Tests canDelete()
92
     */
93
    public function testCanDelete()
94
    {
95
        /** @var JobSection $object */
96
        $object = Injector::inst()->create(JobSection::class);
97
98
        $admin = $this->objFromFixture(Member::class, 'Admin');
99
        $manage = $this->objFromFixture(Member::class, 'Manager');
100
        $visitor = $this->objFromFixture(Member::class, 'Visitor');
101
102
        $this->assertTrue($object->canDelete($admin));
103
        $this->assertTrue($object->canDelete($manage));
104
        $this->assertFalse($object->canDelete($visitor));
105
    }
106
107
    /**
108
     * Tests canView()
109
     */
110
    public function testCanView()
111
    {
112
        /** @var JobSection $object */
113
        $object = Injector::inst()->create(JobSection::class);
114
        $manage = $this->objFromFixture(Member::class, 'Manager');
115
        $this->assertTrue($object->canView($manage));
116
    }
117
}
118