ResourceFilterTest   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Importance

Changes 5
Bugs 0 Features 0
Metric Value
eloc 34
c 5
b 0
f 0
dl 0
loc 82
rs 10
wmc 9

9 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetColumnsAllColumns() 0 6 1
A testGetColumnsNoFields() 0 6 1
A testDefaultValues() 0 6 1
A testForTemplateThrowsExceptionWithNonFormFieldType() 0 4 1
A testGetType() 0 4 1
A testGetColumnsOneField() 0 9 1
A testGetCMSFields() 0 6 1
A testGetColumnsMultipleFields() 0 12 1
A testTitleShouldBeFilterLabel() 0 5 1
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