Passed
Push — master ( db6b5e...9d6515 )
by Robbie
14:18 queued 07:13
created

SelectionGroupTest::testSelectedFieldHolder()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 18
nc 1
nop 0
dl 0
loc 25
rs 8.8571
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\Forms\Tests;
4
5
use SilverStripe\Dev\CSSContentParser;
6
use SilverStripe\Dev\SapphireTest;
7
use SilverStripe\Forms\LiteralField;
8
use SilverStripe\Forms\SelectionGroup_Item;
9
use SilverStripe\Forms\SelectionGroup;
10
11
class SelectionGroupTest extends SapphireTest
12
{
13
    public function testFieldHolder()
14
    {
15
        $items = array(
16
            new SelectionGroup_Item(
17
                'one',
18
                new LiteralField('one', 'one view'),
19
                'one title'
20
            ),
21
            new SelectionGroup_Item(
22
                'two',
23
                new LiteralField('two', 'two view'),
24
                'two title'
25
            ),
26
        );
27
        $field = new SelectionGroup('MyGroup', $items);
28
        $parser = new CSSContentParser($field->FieldHolder());
29
        $listEls = $parser->getBySelector('li');
30
        $listElOne = $listEls[0];
31
        $listElTwo = $listEls[1];
32
33
        $this->assertEquals('one', (string)$listElOne->label[0]->input[0]['value']);
34
        $this->assertEquals('two', (string)$listElTwo->label[0]->input[0]['value']);
35
36
        $this->assertEquals(' one title', (string)$listElOne->label[0]);
37
        $this->assertEquals(' two title', (string)$listElTwo->label[0]);
38
39
        $this->assertContains('one view', (string)$listElOne->div);
40
        $this->assertContains('two view', (string)$listElTwo->div);
41
    }
42
43
    public function testSelectedFieldHolder()
44
    {
45
        $items = array(
46
            new SelectionGroup_Item(
47
                'one',
48
                new LiteralField('one', 'one view'),
49
                'one title'
50
            ),
51
            new SelectionGroup_Item(
52
                'two',
53
                new LiteralField('two', 'two view'),
54
                'two title'
55
            ),
56
        );
57
        $field = new SelectionGroup('MyGroup', $items);
58
        $field->setValue('two');
59
60
        $parser = new CSSContentParser($field->FieldHolder());
61
        $listEls = $parser->getBySelector('li');
62
        $listElOne = $listEls[0];
63
        $listElTwo = $listEls[1];
64
65
        $this->assertEquals('one', (string)$listElOne->label[0]->input[0]['value']);
66
        $this->assertEquals('two', (string)$listElTwo->label[0]->input[0]['value']);
67
        $this->assertEquals('selected', (string)$listElTwo->attributes()->class);
68
    }
69
70
    public function testLegacyItemsFieldHolder()
71
    {
72
        $items = array(
73
            'one' => new LiteralField('one', 'one view'),
74
            'two' => new LiteralField('two', 'two view'),
75
        );
76
        $field = new SelectionGroup('MyGroup', $items);
77
        $parser = new CSSContentParser($field->FieldHolder());
78
        $listEls = $parser->getBySelector('li');
79
        $listElOne = $listEls[0];
80
        $listElTwo = $listEls[1];
81
82
        $this->assertEquals('one', (string)$listElOne->label[0]->input[0]['value']);
83
        $this->assertEquals('two', (string)$listElTwo->label[0]->input[0]['value']);
84
85
        $this->assertEquals(' one', (string)$listElOne->label[0]);
86
        $this->assertEquals(' two', (string)$listElTwo->label[0]);
87
    }
88
89
    public function testLegacyItemsFieldHolderWithTitle()
90
    {
91
        $items = array(
92
            'one//one title' => new LiteralField('one', 'one view'),
93
            'two//two title' => new LiteralField('two', 'two view'),
94
        );
95
        $field = new SelectionGroup('MyGroup', $items);
96
        $parser = new CSSContentParser($field->FieldHolder());
97
        $listEls = $parser->getBySelector('li');
98
        $listElOne = $listEls[0];
99
        $listElTwo = $listEls[1];
100
101
        $this->assertEquals('one', (string)$listElOne->label[0]->input[0]['value']);
102
        $this->assertEquals('two', (string)$listElTwo->label[0]->input[0]['value']);
103
104
        $this->assertEquals(' one title', (string)$listElOne->label[0]);
105
        $this->assertEquals(' two title', (string)$listElTwo->label[0]);
106
    }
107
}
108