Passed
Pull Request — master (#111)
by Jason
02:35
created

VariationTypeTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Dynamic\Foxy\Test\Model;
4
5
use Dynamic\Foxy\Extension\Purchasable;
6
use Dynamic\Foxy\Model\FoxyCategory;
7
use Dynamic\Foxy\Model\Variation;
8
use Dynamic\Foxy\Model\VariationType;
9
use Dynamic\Foxy\Test\TestOnly\TestProduct;
10
use Dynamic\Foxy\Test\TestOnly\TestVariation;
11
use SilverStripe\Core\Config\Config;
12
use SilverStripe\Core\Injector\Injector;
13
use SilverStripe\Dev\SapphireTest;
14
use SilverStripe\Forms\FieldList;
15
use SilverStripe\Security\Member;
16
17
/**
18
 * Class VariationTypeTest
19
 * @package Dynamic\Foxy\Test\Model
20
 */
21
class VariationTypeTest extends SapphireTest
22
{
23
    /**
24
     * @var string
25
     */
26
    protected static $fixture_file = '../fixtures.yml';
27
28
    /**
29
     * @var array
30
     */
31
    protected static $extra_dataobjects = [
32
        TestProduct::class,
33
        TestVariation::class,
34
    ];
35
36
    /**
37
     * @var \string[][]
38
     */
39
    protected static $required_extensions = [
40
        TestProduct::class => [
41
            Purchasable::class,
42
        ],
43
    ];
44
45
    /**
46
     *
47
     */
48
    public function setUp()
49
    {
50
        Config::modify()->set(TestVariation::class, 'has_one', ['Product' => TestProduct::class]);
51
52
        return parent::setUp();
53
    }
54
55
    /**
56
     *
57
     */
58
    public function testGetCMSFields()
59
    {
60
        $object = Injector::inst()->create(VariationType::class);
61
        $fields = $object->getCMSFields();
62
        $this->assertInstanceOf(FieldList::class, $fields);
63
64
        $object->write();
65
        $fields = $object->getCMSFields();
66
        $this->assertInstanceOf(FieldList::class, $fields);
67
    }
68
69
    /**
70
     *
71
     */
72
    public function testCanCreate()
73
    {
74
        /** @var VariationType $object */
75
        $object = singleton(VariationType::class);
76
        /** @var \SilverStripe\Security\Member $admin */
77
        $admin = $this->objFromFixture(Member::class, 'admin');
78
        /** @var \SilverStripe\Security\Member $siteOwner */
79
        $siteOwner = $this->objFromFixture(Member::class, 'site-owner');
80
        /** @var \SilverStripe\Security\Member $default */
81
        $default = $this->objFromFixture(Member::class, 'default');
82
83
        $this->assertFalse($object->canCreate($default));
84
        $this->assertTrue($object->canCreate($admin));
85
        $this->assertTrue($object->canCreate($siteOwner));
86
    }
87
88
    /**
89
     *
90
     */
91
    public function testCanEdit()
92
    {
93
        /** @var VariationType $object */
94
        $object = singleton(VariationType::class);
95
        /** @var \SilverStripe\Security\Member $admin */
96
        $admin = $this->objFromFixture(Member::class, 'admin');
97
        /** @var \SilverStripe\Security\Member $siteOwner */
98
        $siteOwner = $this->objFromFixture(Member::class, 'site-owner');
99
        /** @var \SilverStripe\Security\Member $default */
100
        $default = $this->objFromFixture(Member::class, 'default');
101
102
        $this->assertFalse($object->canEdit($default));
103
        $this->assertTrue($object->canEdit($admin));
104
        $this->assertTrue($object->canEdit($siteOwner));
105
    }
106
107
    /**
108
     *
109
     */
110
    public function testCanDelete()
111
    {
112
        /** @var VariationType $object */
113
        $object = singleton(VariationType::class);
114
        /** @var \SilverStripe\Security\Member $admin */
115
        $admin = $this->objFromFixture(Member::class, 'admin');
116
        /** @var \SilverStripe\Security\Member $siteOwner */
117
        $siteOwner = $this->objFromFixture(Member::class, 'site-owner');
118
        /** @var \SilverStripe\Security\Member $default */
119
        $default = $this->objFromFixture(Member::class, 'default');
120
121
        $this->assertFalse($object->canDelete($default));
122
        $this->assertTrue($object->canDelete($admin));
123
        $this->assertTrue($object->canDelete($siteOwner));
124
    }
125
}
126