testUpdateCollectionItems()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 29
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 18
nc 1
nop 0
dl 0
loc 29
rs 9.6666
c 1
b 0
f 0
1
<?php
2
3
namespace Dynamic\Jobs\Tests\Extensions;
4
5
use Dynamic\Jobs\Page\Job;
6
use SilverStripe\Core\Injector\Injector;
7
use SilverStripe\Dev\SapphireTest;
8
use SilverStripe\Forms\DropdownField;
9
use SilverStripe\Forms\FieldList;
10
use SilverStripe\Forms\Form;
11
use SilverStripe\ORM\ArrayList;
12
use SilverStripe\ORM\FieldType\DBDatetime;
13
14
/**
15
 * Class JobHolderCollectionExtensionTest
16
 * @package Dynamic\Jobs\Tests\Extensions
17
 */
18
class JobHolderCollectionExtensionTest extends SapphireTest
19
{
20
    /**
21
     * @var string
22
     */
23
    protected static $fixture_file = '../fixtures.yml';
24
25
    /**
26
     * @var array
27
     */
28
    protected static $extra_dataobjects = [
29
        JobHolderCollectionExtensionTest_Object::class,
30
    ];
31
32
    /**
33
     * Tests updateCollectionFilters()
34
     */
35
    public function testUpdateCollectionFilters()
36
    {
37
        /** @var JobHolderCollectionExtensionTest_Object $object */
38
        $object = Injector::inst()->create(JobHolderCollectionExtensionTest_Object::class);
39
        $object->write();
40
        $filter = [];
41
        $newFilter = $object->getCollectionFilters($filter);
42
43
        $this->assertArrayHasKey('ParentID', $newFilter);
44
    }
45
46
    /**
47
     * Tests updateCollectionForm()
48
     */
49
    public function testUpdateCollectionForm()
50
    {
51
        /** @var JobHolderCollectionExtensionTest_Object $object */
52
        $object = Injector::inst()->create(JobHolderCollectionExtensionTest_Object::class);
53
54
        $fields = new FieldList(
55
            DropdownField::create('Categories__ID')
56
        );
57
58
        $form = new Form(null, 'Form', $fields, new FieldList());
59
        $newForm = $object->getCollectionForm($form);
60
61
        $this->assertInstanceOf(Form::class, $newForm);
62
    }
63
64
    /**
65
     * Tests updateCollectionItems()
66
     */
67
    public function testUpdateCollectionItems()
68
    {
69
        /** @var JobHolderCollectionExtensionTest_Object $object */
70
        $object = Injector::inst()->create(JobHolderCollectionExtensionTest_Object::class);
71
72
        /** @var Job $past */
73
        $past = $this->objFromFixture(Job::class, 'past');
74
        $past->write();
75
        /** @var Job $open */
76
        $open = $this->objFromFixture(Job::class, 'open');
77
        $open->write();
78
        /** @var Job $future */
79
        $future = $this->objFromFixture(Job::class, 'future');
80
        $future->write();
81
82
        $list = new ArrayList([
83
            $past,
84
            $open,
85
            $future,
86
        ]);
87
88
        DBDatetime::set_mock_now('2017-11-15');
89
        $newList = $object->getCollectionItems($list);
90
        $this->assertInstanceOf(ArrayList::class, $newList);
91
        $this->assertEquals(1, $newList->count());
92
93
        DBDatetime::set_mock_now('2017-11-29');
94
        $newList = $object->getCollectionItems($list);
95
        $this->assertEquals(2, $newList->count());
96
    }
97
}
98