FormTest   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 117
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 70
c 1
b 0
f 0
dl 0
loc 117
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
B testFormWithStandardClasses() 0 109 1
1
<?php
2
3
namespace AntonyThorpe\FormFieldAdditionalClasses\Tests;
4
5
use SilverStripe\Dev\FunctionalTest;
6
use AntonyThorpe\FormFieldAdditionalClasses\Tests\FormTestController;
7
8
/**
9
 * FormTest
10
 *
11
 * Controller tests
12
 */
13
class FormTest extends FunctionalTest
14
{
15
    protected static $disable_theme = true;
16
17
    protected static $extra_controllers = [
18
        FormTestController::class
19
    ];
20
21
    public function testFormWithStandardClasses()
22
    {
23
        $page = $this->get('FormTestController');
24
        $this->assertEquals(200, $page->getStatusCode(), "a page should load");
25
        $body = $page->getBody();
26
27
        $this->assertContains(
28
            '<div id="Form_Form_Spaceship_Holder" class="field text">',
29
            $body,
30
            'TextField holder with default classes'
31
        );
32
33
        $this->assertExactHTMLMatchBySelector(
34
            '#Form_Form_Spaceship_Holder label.left',
35
            [
36
                '<label class="left" for="Form_Form_Spaceship">Spaceship</label>'
37
            ]
38
        );
39
40
        $this->assertExactHTMLMatchBySelector(
41
            '#Form_Form_Spaceship_Holder .middleColumn',
42
            [
43
                '<div class="middleColumn"><input type="text" name="Spaceship" class="text" id="Form_Form_Spaceship" /></div>'
44
            ]
45
        );
46
47
        $this->assertContains(
48
            '<div id="Form_Form_CheckboxFieldExample_Holder" class="field checkbox">',
49
            $body,
50
            'CheckboxField holder with default classes'
51
        );
52
53
        $this->assertExactHTMLMatchBySelector(
54
            '#Form_Form_CheckboxFieldExample_Holder label.right',
55
            [
56
                '<label class="right" for="Form_Form_CheckboxFieldExample">Checkbox Field Example</label>'
57
            ]
58
        );
59
60
        $this->assertContains(
61
            '<div class="CompositeField field composite" id="Form_Form_CompositeFieldOneCompositeFieldTwo_Holder">',
62
            $body,
63
            'CompositeField holder with default classes'
64
        );
65
66
        $this->assertExactHTMLMatchBySelector(
67
            '#Form_Form_CompositeFieldOne_Holder label.left',
68
            [
69
                '<label class="left" for="Form_Form_CompositeFieldOne">Composite Field One</label>'
70
            ]
71
        );
72
73
        $this->assertExactHTMLMatchBySelector(
74
            '#Form_Form_CompositeFieldOne_Holder .middleColumn',
75
            [
76
                '<div class="middleColumn"><input type="text" name="CompositeFieldOne" class="text" id="Form_Form_CompositeFieldOne" /></div>'
77
            ]
78
        );
79
80
        $this->assertContains(
81
            '<div id="Form_Form_Accessories_Holder" class="field optionset">',
82
            $body,
83
            'OptionsetField holder with default classes'
84
        );
85
86
        $this->assertExactHTMLMatchBySelector(
87
            '#Form_Form_Accessories_Holder label.left',
88
            [
89
                '<label class="left">Accessories</label>'
90
            ]
91
        );
92
93
        $this->assertPartialHTMLMatchBySelector(
94
            '#Form_Form_Accessories_Holder div.middleColumn',
95
            [
96
                '<div class="middleColumn">
97
<ul class="optionset" id="Form_Form_Accessories" role="listbox">
98
<li class="odd valFlying_High_DVD" role="option"><input id="Form_Form_Accessories_Flying_High_DVD" class="radio" name="Accessories" type="radio" value="Flying High DVD" /> <label for="Form_Form_Accessories_Flying_High_DVD">Flying High DVD</label></li>
99
<li class="even valZero_Gravity_Pillow" role="option"><input id="Form_Form_Accessories_Zero_Gravity_Pillow" class="radio" name="Accessories" type="radio" value="Zero Gravity Pillow" checked="checked" /> <label for="Form_Form_Accessories_Zero_Gravity_Pillow">Zero Gravity Pillow</label></li>
100
<li class="odd valRocket_Replica" role="option"><input id="Form_Form_Accessories_Rocket_Replica" class="radio" name="Accessories" type="radio" value="Rocket Replica" /> <label for="Form_Form_Accessories_Rocket_Replica">Rocket Replica</label></li>
101
</ul>
102
</div>'
103
            ]
104
        );
105
106
        $this->assertPartialHTMLMatchBySelector(
107
            '#Form_Form_Accessories_Holder span.description',
108
            [
109
                '<span class="description">Make your selection</span>'
110
            ]
111
        );
112
113
        $this->assertContains(
114
            '<div id="BlastOff" class="field fieldgroup">',
115
            $body,
116
            'FieldGroupField holder with default classes'
117
        );
118
119
        $this->assertExactHTMLMatchBySelector(
120
            '#Form_Form_FieldGroupFieldOne_Holder label.left',
121
            [
122
                '<label class="fieldholder-small-label left" for="Form_Form_FieldGroupFieldOne">FieldGroup Field One</label>'
123
            ]
124
        );
125
126
        $this->assertExactHTMLMatchBySelector(
127
            '#BlastOff div.middleColumn',
128
            [
129
                '<div class="middleColumn fieldgroup">
130
<div class="fieldgroup-field first odd">
131
<div class="fieldholder-small field text" id="Form_Form_FieldGroupFieldOne_Holder"><label class="fieldholder-small-label left" for="Form_Form_FieldGroupFieldOne">FieldGroup Field One</label> <input type="text" name="FieldGroupFieldOne" class="text" id="Form_Form_FieldGroupFieldOne" /></div>
132
</div>
133
<div class="fieldgroup-field last even">
134
<div class="fieldholder-small field text" id="Form_Form_FieldGroupFieldTwo_Holder"><label class="fieldholder-small-label left" for="Form_Form_FieldGroupFieldTwo">FieldGroup Field Two</label> <input type="text" name="FieldGroupFieldTwo" class="text" id="Form_Form_FieldGroupFieldTwo" /></div>
135
</div>
136
</div>'
137
            ]
138
        );
139
140
        // add additional tests here after adding to the form below
141
    }
142
}
143