OptionGroupTest::testCanView()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 5
c 1
b 0
f 0
dl 0
loc 7
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Dynamic\FoxyStripe\Test;
4
5
use Dynamic\FoxyStripe\Model\OptionGroup;
6
use Dynamic\FoxyStripe\Model\OptionItem;
7
use SilverStripe\Dev\SapphireTest;
8
use SilverStripe\Forms\RequiredFields;
9
use SilverStripe\ORM\ValidationException;
10
use SilverStripe\Security\Member;
11
12
class OptionGroupTest extends SapphireTest
13
{
14
    /**
15
     * @var string
16
     */
17
    protected static $fixture_file = 'fixtures.yml';
18
19
    /**
20
     *
21
     */
22
    public function testGetCMSValidator()
23
    {
24
        $object = $this->objFromFixture(OptionGroup::class, 'size');
25
        $this->assertInstanceOf(RequiredFields::class, $object->getCMSValidator());
26
    }
27
28
    /**
29
     * @throws ValidationException
30
     */
31
    public function testValidateTitle()
32
    {
33
        $object = $this->objFromFixture(OptionGroup::class, 'size');
34
        $orig = $object->Title;
35
        $object->Title = '2'.$orig;
36
        $this->expectException(ValidationException::class);
37
        $object->write();
38
39
        $object->Title = $orig.'&';
40
        $this->expectException(ValidationException::class);
41
        $object->write();
42
    }
43
44
    /**
45
     *
46
     */
47
    public function testOnBeforeDelete()
48
    {
49
        $group = $this->objFromFixture(OptionGroup::class, 'size');
50
        $item = $this->objFromFixture(OptionItem::class, 'large');
51
        $this->assertEquals($item->ProductOptionGroupID, $group->ID);
52
53
        $groupID = $group->ID;
54
        $group->delete();
55
        $this->assertNull(OptionGroup::get()->byID($groupID));
56
57
        // assert that the new child has been reassigned
58
        $group2 = $this->objFromFixture(OptionGroup::class, 'default');
59
        $item2 = OptionItem::get()->byID($item->ID);
60
        $this->assertEquals($item2->ProductOptionGroupID, $group2->ID);
61
    }
62
63
    /**
64
     *
65
     */
66
    public function testCanView()
67
    {
68
        $object = $this->objFromFixture(OptionGroup::class, 'size');
69
        $admin = $this->objFromFixture(Member::class, 'admin');
70
        $this->assertTrue($object->canView($admin));
71
        $member = $this->objFromFixture(Member::class, 'customer');
72
        $this->assertTrue($object->canView($member));
73
    }
74
75
    /**
76
     *
77
     */
78
    public function testCanEdit()
79
    {
80
        $object = $this->objFromFixture(OptionGroup::class, 'default');
81
        $admin = $this->objFromFixture(Member::class, 'admin');
82
        $this->assertFalse($object->canEdit($admin));
83
84
        $object = $this->objFromFixture(OptionGroup::class, 'size');
85
        $this->assertTrue($object->canEdit($admin));
86
        $member = $this->objFromFixture(Member::class, 'customer');
87
        $this->assertFalse($object->canEdit($member));
88
    }
89
90
    /**
91
     *
92
     */
93
    public function testCanDelete()
94
    {
95
        $object = $this->objFromFixture(OptionGroup::class, 'default');
96
        $admin = $this->objFromFixture(Member::class, 'admin');
97
        $this->assertFalse($object->canDelete($admin));
98
99
        $object = $this->objFromFixture(OptionGroup::class, 'size');
100
        $this->assertTrue($object->canDelete($admin));
101
        $member = $this->objFromFixture(Member::class, 'customer');
102
        $this->assertFalse($object->canDelete($member));
103
    }
104
105
    /**
106
     *
107
     */
108
    public function testCanCreate()
109
    {
110
        $object = $this->objFromFixture(OptionGroup::class, 'size');
111
        $admin = $this->objFromFixture(Member::class, 'admin');
112
        $this->assertTrue($object->canCreate($admin));
113
        $member = $this->objFromFixture(Member::class, 'customer');
114
        $this->assertFalse($object->canCreate($member));
115
    }
116
}
117