Passed
Push — master ( 9503f0...488e4f )
by Petr
02:34
created

SelectTest::testSimpleSelect()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 50
Code Lines 42

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 42
nc 1
nop 0
dl 0
loc 50
rs 9.248
c 1
b 0
f 0
1
<?php
2
3
namespace ControlTests;
4
5
6
use CommonTestClass;
7
use kalanis\kw_forms\Controls;
8
use kalanis\kw_forms\Exceptions\RenderException;
9
10
11
class SelectTest extends CommonTestClass
12
{
13
    /**
14
     * @throws RenderException
15
     */
16
    public function testOption(): void
17
    {
18
        $input = new Controls\SelectOption();
19
        $input->setEntry('unused', 'original', 'check me');
20
        $this->assertEmpty($input->renderLabel());
21
        $this->assertEmpty($input->renderErrors([]));
22
        $this->assertEquals('original', $input->getOriginalValue());
23
        $this->assertEquals('<option value="original">check me</option>', $input->renderInput());
24
        $input->setValue('original');
25
        $this->assertEquals('<option value="original" selected="selected">check me</option>', $input->renderInput());
26
        $input->setValue('jhgfd');
27
        $this->assertEquals('<option value="original">check me</option>', $input->renderInput());
28
    }
29
30
    /**
31
     * @throws RenderException
32
     */
33
    public function testGrouping(): void
34
    {
35
        $extra = new Controls\SelectOption();
36
        $extra->setEntry('edd', '1', 'fourth');
37
38
        $input = new Controls\SelectOptgroup();
39
        $input->set('myown', 'choose me', ['foo' => 'first', 'bar' => 'second', 'baz' => 'third', 'edd' => $extra]);
40
41
        $this->assertEmpty($input->renderErrors([]));
42
        $this->assertEquals(
43
  '<optgroup label="choose me"> <option value="foo">first</option> ' . PHP_EOL
44
. ' <option value="bar">second</option> ' . PHP_EOL
45
. ' <option value="baz">third</option> ' . PHP_EOL
46
. ' <option value="1">fourth</option> </optgroup>', $input->renderInput());
47
        $input->setValue('baz');
48
        $this->assertEquals('baz', $input->getValue());
49
        $this->assertEquals(
50
  '<optgroup label="choose me"> <option value="foo">first</option> ' . PHP_EOL
51
. ' <option value="bar">second</option> ' . PHP_EOL
52
. ' <option value="baz" selected="selected">third</option> ' . PHP_EOL
53
. ' <option value="1">fourth</option> </optgroup>', $input->renderInput());
54
        $input->setValue('out');
55
        $this->assertEmpty($input->getValue());
56
    }
57
58
    /**
59
     * @throws RenderException
60
     */
61
    public function testSimpleSelect(): void
62
    {
63
        $extra = new Controls\SelectOption();
64
        $extra->setEntry('edd', '1', 'fourth');
65
66
        $group = new Controls\SelectOptgroup();
67
        $group->set('myown', 'choose me', ['foo' => 'first', 'bar' => 'second', 'baz' => 'third', ]);
68
69
        $childs = [
70
            'choose this' => $group,
71
            'choose another' => [
72
                'fss' => 'fifth',
73
                'dfg' => 'sixth',
74
            ],
75
            'edd' => $extra,
76
            'srr' => 'last',
77
        ];
78
79
        $input = new Controls\Select();
80
        $input->set('myown', 'original', 'choose some', $childs);
81
82
        $this->assertEquals('', $input->getValue());
83
        $this->assertEquals(
84
  '<select  id="myown" name="myown"> <optgroup label="choose me"> <option value="foo">first</option> ' . PHP_EOL
85
. ' <option value="bar">second</option> ' . PHP_EOL
86
. ' <option value="baz">third</option> </optgroup> ' . PHP_EOL
87
. ' <optgroup label="choose another"> <option value="fss">fifth</option> ' . PHP_EOL
88
. ' <option value="dfg">sixth</option> </optgroup> ' . PHP_EOL
89
. ' <option value="1">fourth</option> ' . PHP_EOL
90
. ' <option value="srr">last</option> </select>', $input->renderInput());
91
        $input->setValue('dfg');
92
        $this->assertEquals('dfg', $input->getValue());
93
        $this->assertEquals(
94
  '<select  id="myown" name="myown"> <optgroup label="choose me"> <option value="foo">first</option> ' . PHP_EOL
95
. ' <option value="bar">second</option> ' . PHP_EOL
96
. ' <option value="baz">third</option> </optgroup> ' . PHP_EOL
97
. ' <optgroup label="choose another"> <option value="fss">fifth</option> ' . PHP_EOL
98
. ' <option value="dfg" selected="selected">sixth</option> </optgroup> ' . PHP_EOL
99
. ' <option value="1">fourth</option> ' . PHP_EOL
100
. ' <option value="srr">last</option> </select>', $input->renderInput());
101
        $input->setValue('1');
102
        $this->assertEquals('1', $input->getValue());
103
        $this->assertEquals(
104
  '<select  id="myown" name="myown"> <optgroup label="choose me"> <option value="foo">first</option> ' . PHP_EOL
105
. ' <option value="bar">second</option> ' . PHP_EOL
106
. ' <option value="baz">third</option> </optgroup> ' . PHP_EOL
107
. ' <optgroup label="choose another"> <option value="fss">fifth</option> ' . PHP_EOL
108
. ' <option value="dfg">sixth</option> </optgroup> ' . PHP_EOL
109
. ' <option value="1" selected="selected">fourth</option> ' . PHP_EOL
110
. ' <option value="srr">last</option> </select>', $input->renderInput());
111
    }
112
113
    /**
114
     * @throws RenderException
115
     */
116
    public function testListSelect(): void
117
    {
118
        $extra = new Controls\SelectOption();
119
        $extra->setEntry('edd', '1', 'fourth');
120
121
        $childs = [
122
            'foo' => 'first',
123
            'bar' => 'second',
124
            'baz' => 'third',
125
            'edd' => $extra,
126
            'srr' => 'last',
127
        ];
128
129
        $input = new Controls\SelectList();
130
        $input->set('myown', 'choose some', $childs, 4);
131
132
        $this->assertEquals('', $input->getValue());
133
        $this->assertEquals(
134
            '<select  size="4" id="myown" name="myown"> <option value="foo">first</option> ' . PHP_EOL
135
            . ' <option value="bar">second</option> ' . PHP_EOL
136
            . ' <option value="baz">third</option> ' . PHP_EOL
137
            . ' <option value="1">fourth</option> ' . PHP_EOL
138
            . ' <option value="srr">last</option> </select>', $input->renderInput());
139
        $input->setValue('baz');
140
        $this->assertEquals('baz', $input->getValue());
141
        $this->assertEquals(
142
            '<select  size="4" id="myown" name="myown"> <option value="foo">first</option> ' . PHP_EOL
143
            . ' <option value="bar">second</option> ' . PHP_EOL
144
            . ' <option value="baz" selected="selected">third</option> ' . PHP_EOL
145
            . ' <option value="1">fourth</option> ' . PHP_EOL
146
            . ' <option value="srr">last</option> </select>', $input->renderInput());
147
        $input->setValue('1');
148
        $this->assertEquals('1', $input->getValue());
149
        $this->assertEquals(
150
            '<select  size="4" id="myown" name="myown"> <option value="foo">first</option> ' . PHP_EOL
151
            . ' <option value="bar">second</option> ' . PHP_EOL
152
            . ' <option value="baz">third</option> ' . PHP_EOL
153
            . ' <option value="1" selected="selected">fourth</option> ' . PHP_EOL
154
            . ' <option value="srr">last</option> </select>', $input->renderInput());
155
        $input->setValues(['foo', 'srr']);
156
        $this->assertEquals('foo', $input->getValue());
157
        $this->assertEquals(
158
            '<select  size="4" id="myown" name="myown"> <option value="foo" selected="selected">first</option> ' . PHP_EOL
159
            . ' <option value="bar">second</option> ' . PHP_EOL
160
            . ' <option value="baz">third</option> ' . PHP_EOL
161
            . ' <option value="1">fourth</option> ' . PHP_EOL
162
            . ' <option value="srr" selected="selected">last</option> </select>', $input->renderInput());
163
        $this->assertNotEmpty($input->getValues());
164
    }
165
}
166