ResourceFilterTest::testGetColumnsNoFields()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 2
b 0
f 0
nc 1
nop 0
dl 0
loc 6
rs 10
1
<?php
2
3
namespace SilverStripe\CKANRegistry\Tests\Model;
4
5
use InvalidArgumentException;
6
use SilverStripe\CKANRegistry\Model\ResourceField;
7
use SilverStripe\CKANRegistry\Model\ResourceFilter;
8
use SilverStripe\Dev\SapphireTest;
9
10
class ResourceFilterTest extends SapphireTest
11
{
12
    protected $usesDatabase = true;
13
14
    /**
15
     * @expectedException InvalidArgumentException
16
     * @expectedExceptionMessage SilverStripe\Control\HTTPResponse is not a FormField
17
     */
18
    public function testForTemplateThrowsExceptionWithNonFormFieldType()
19
    {
20
        $filter = new ResourceFilterTest\InvalidResourceFilter();
21
        $filter->forTemplate();
22
    }
23
24
    public function testGetType()
25
    {
26
        $filter = new ResourceFilter();
27
        $this->assertSame('Text', $filter->getType());
28
    }
29
30
    public function testGetCMSFields()
31
    {
32
        $filter = new ResourceFilter();
33
        $fields = $filter->getCMSFields();
34
35
        $this->assertNull($fields->dataFieldByName('FilterForID'), 'FilterForID should be removed');
36
    }
37
38
    public function testGetColumnsNoFields()
39
    {
40
        $filter = new ResourceFilter();
41
        $filter->AllColumns = false;
42
43
        $this->assertEmpty($filter->getColumns(), 'Should return an empty string without fields');
44
    }
45
46
    public function testGetColumnsOneField()
47
    {
48
        $filter = new ResourceFilter();
49
        $filter->AllColumns = false;
50
        $field = new ResourceField();
51
        $field->ReadableLabel = 'My field';
52
        $filter->FilterFields()->add($field);
53
54
        $this->assertSame('My field', $filter->getColumns(), 'Should return the single field name');
55
    }
56
57
    public function testGetColumnsMultipleFields()
58
    {
59
        $filter = new ResourceFilter();
60
        $filter->AllColumns = false;
61
62
        $field = new ResourceField();
63
        $filter->FilterFields()->add($field);
64
65
        $field2 = new ResourceField();
66
        $filter->FilterFields()->add($field2);
67
68
        $this->assertContains('Multiple columns', $filter->getColumns(), 'Should return "multiple columns"');
69
    }
70
71
    public function testGetColumnsAllColumns()
72
    {
73
        $filter = new ResourceFilter();
74
        $filter->AllColumns = true;
75
76
        $this->assertContains('All columns', $filter->getColumns(), 'Should return "all columns"');
77
    }
78
79
    public function testDefaultValues()
80
    {
81
        $filter = new ResourceFilter();
82
        $filter->write();
83
84
        $this->assertTrue($filter->AllColumns, 'AllColumns should be enabled by default');
85
    }
86
87
    public function testTitleShouldBeFilterLabel()
88
    {
89
        $field = new ResourceFilter();
90
        $field->FilterLabel = 'My filter name';
91
        $this->assertSame('My filter name', $field->getTitle());
92
    }
93
}
94