@@ -9,11 +9,11 @@ Vue.component("FieldSelect", FieldSelect);
9
9
let el , vm , field ;
10
10
11
11
function createField ( test , schema = { } , model = null , disabled = false , options ) {
12
- [ el , vm , field ] = createVueField ( test , "fieldSelect" , schema , model , disabled , options ) ;
12
+ [ el , vm , field ] = createVueField ( test , "fieldSelect" , schema , model , disabled , options ) ;
13
13
}
14
14
15
15
16
- describe ( "fieldSelect.vue" , function ( ) {
16
+ describe ( "fieldSelect.vue" , function ( ) {
17
17
18
18
describe ( "check template" , ( ) => {
19
19
let schema = {
@@ -31,7 +31,7 @@ describe("fieldSelect.vue", function() {
31
31
let model = { city : "Paris" } ;
32
32
let input ;
33
33
34
- before ( ( ) => {
34
+ before ( ( ) => {
35
35
createField ( this , schema , model , false ) ;
36
36
input = el . getElementsByTagName ( "select" ) [ 0 ] ;
37
37
} ) ;
@@ -60,7 +60,7 @@ describe("fieldSelect.vue", function() {
60
60
} ) ;
61
61
62
62
it ( "should contain the value" , ( done ) => {
63
- vm . $nextTick ( ( ) => {
63
+ vm . $nextTick ( ( ) => {
64
64
expect ( input . value ) . to . be . equal ( "Paris" ) ;
65
65
done ( ) ;
66
66
} ) ;
@@ -69,16 +69,16 @@ describe("fieldSelect.vue", function() {
69
69
describe ( "check optional attribute" , ( ) => {
70
70
let attributes = [ "disabled" , "inputName" ] ;
71
71
72
- attributes . forEach ( function ( name ) {
73
- it ( "should set " + name , function ( done ) {
72
+ attributes . forEach ( function ( name ) {
73
+ it ( "should set " + name , function ( done ) {
74
74
checkAttribute ( name , vm , input , field , schema , done ) ;
75
75
} ) ;
76
76
} ) ;
77
77
} ) ;
78
78
79
79
it ( "input value should be the model value after changed" , ( done ) => {
80
80
model . city = "Rome" ;
81
- vm . $nextTick ( ( ) => {
81
+ vm . $nextTick ( ( ) => {
82
82
expect ( input . value ) . to . be . equal ( "Rome" ) ;
83
83
done ( ) ;
84
84
} ) ;
@@ -89,7 +89,7 @@ describe("fieldSelect.vue", function() {
89
89
input . value = "London" ;
90
90
trigger ( input , "change" ) ;
91
91
92
- vm . $nextTick ( ( ) => {
92
+ vm . $nextTick ( ( ) => {
93
93
expect ( model . city ) . to . be . equal ( "London" ) ;
94
94
done ( ) ;
95
95
} ) ;
@@ -98,7 +98,7 @@ describe("fieldSelect.vue", function() {
98
98
99
99
it ( "should contain a disabled <non selected> element if required" , ( done ) => {
100
100
schema . required = true ;
101
- vm . $nextTick ( ( ) => {
101
+ vm . $nextTick ( ( ) => {
102
102
let options = input . querySelectorAll ( "option" ) ;
103
103
expect ( options [ 0 ] . disabled ) . to . be . true ;
104
104
expect ( options [ 0 ] . textContent ) . to . be . equal ( "<Nothing selected>" ) ;
@@ -110,7 +110,7 @@ describe("fieldSelect.vue", function() {
110
110
Vue . set ( vm . schema , "selectOptions" , {
111
111
noneSelectedText : "Empty list"
112
112
} ) ;
113
- vm . $nextTick ( ( ) => {
113
+ vm . $nextTick ( ( ) => {
114
114
let options = input . querySelectorAll ( "option" ) ;
115
115
expect ( options [ 0 ] . disabled ) . to . be . true ;
116
116
expect ( options [ 0 ] . textContent ) . to . be . equal ( "Empty list" ) ;
@@ -126,7 +126,7 @@ describe("fieldSelect.vue", function() {
126
126
noneSelectedText : "Empty list" ,
127
127
hideNoneSelectedText : true
128
128
} ) ;
129
- vm . $nextTick ( ( ) => {
129
+ vm . $nextTick ( ( ) => {
130
130
let options = input . querySelectorAll ( "option" ) ;
131
131
expect ( options [ 0 ] . disabled ) . to . be . false ;
132
132
expect ( options [ 0 ] . textContent ) . to . not . be . equal ( "Empty list" ) ;
@@ -148,37 +148,57 @@ describe("fieldSelect.vue", function() {
148
148
{ id : 1 , name : "London" } ,
149
149
{ id : 2 , name : "Paris" } ,
150
150
{ id : 3 , name : "Rome" } ,
151
- { id : 4 , name : "Berlin" }
151
+ { id : 4 , name : "Berlin" } ,
152
+ { id : 5 , name : "Budapest" , group : "HUN" } ,
153
+ { id : 6 , name : "Paks" , group : "HUN" } ,
152
154
]
153
155
} ;
154
156
let model = { city : 2 } ;
155
157
let input ;
156
158
157
- before ( ( ) => {
159
+ before ( ( ) => {
158
160
createField ( this , schema , model , false ) ;
159
161
input = el . getElementsByTagName ( "select" ) [ 0 ] ;
160
162
} ) ;
161
163
162
164
it ( "should contain option elements" , ( ) => {
163
165
let options = input . querySelectorAll ( "option" ) ;
164
- expect ( options . length ) . to . be . equal ( 4 + 1 ) ; // +1 for <non selected>
166
+ expect ( options . length ) . to . be . equal ( 6 + 1 ) ; // +1 for <non selected>
165
167
166
168
expect ( options [ 2 ] . value ) . to . be . equal ( "2" ) ;
167
169
expect ( options [ 2 ] . textContent ) . to . be . equal ( "Paris" ) ;
168
170
expect ( options [ 2 ] . selected ) . to . be . true ;
169
171
expect ( options [ 1 ] . selected ) . to . be . false ;
170
172
} ) ;
171
173
174
+ it ( "should contain optgroup elements" , ( ) => {
175
+ let optgroups = input . querySelectorAll ( "optgroup" ) ;
176
+ expect ( optgroups . length ) . to . be . equal ( 1 ) ;
177
+ expect ( optgroups [ 0 ] . label ) . to . be . equal ( "HUN" ) ;
178
+ } ) ;
179
+
180
+ it ( "should contain option elements in optgroup" , ( ) => {
181
+ let og = input . getElementsByTagName ( "optgroup" ) [ 0 ]
182
+ let options = og . querySelectorAll ( "option" ) ;
183
+
184
+ expect ( options . length ) . to . be . equal ( 2 ) ;
185
+ expect ( options [ 0 ] . selected ) . to . be . false ;
186
+ expect ( options [ 1 ] . selected ) . to . be . false ;
187
+
188
+ expect ( options [ 1 ] . textContent ) . to . be . equal ( "Paks" ) ;
189
+ expect ( options [ 1 ] . value ) . to . be . equal ( "6" ) ;
190
+ } ) ;
191
+
172
192
it ( "should contain the value" , ( done ) => {
173
- vm . $nextTick ( ( ) => {
193
+ vm . $nextTick ( ( ) => {
174
194
expect ( input . value ) . to . be . equal ( "2" ) ;
175
195
done ( ) ;
176
196
} ) ;
177
197
} ) ;
178
198
179
199
it ( "input value should be the model value after changed" , ( done ) => {
180
200
model . city = 3 ;
181
- vm . $nextTick ( ( ) => {
201
+ vm . $nextTick ( ( ) => {
182
202
expect ( input . value ) . to . be . equal ( "3" ) ;
183
203
done ( ) ;
184
204
} ) ;
@@ -189,7 +209,7 @@ describe("fieldSelect.vue", function() {
189
209
input . value = "4" ;
190
210
trigger ( input , "change" ) ;
191
211
192
- vm . $nextTick ( ( ) => {
212
+ vm . $nextTick ( ( ) => {
193
213
expect ( model . city ) . to . be . equal ( 4 ) ;
194
214
done ( ) ;
195
215
} ) ;
@@ -215,21 +235,21 @@ describe("fieldSelect.vue", function() {
215
235
let model = { city : 2 } ;
216
236
let input ;
217
237
218
- before ( ( ) => {
238
+ before ( ( ) => {
219
239
createField ( this , schema , model , false ) ;
220
240
input = el . getElementsByTagName ( "select" ) [ 0 ] ;
221
241
} ) ;
222
242
223
243
it ( "should contain the value" , ( done ) => {
224
- vm . $nextTick ( ( ) => {
244
+ vm . $nextTick ( ( ) => {
225
245
expect ( input . value ) . to . be . equal ( "2" ) ;
226
246
done ( ) ;
227
247
} ) ;
228
248
} ) ;
229
249
230
250
it ( "input value should be the model value after changed" , ( done ) => {
231
251
model . city = 3 ;
232
- vm . $nextTick ( ( ) => {
252
+ vm . $nextTick ( ( ) => {
233
253
expect ( input . value ) . to . be . equal ( "3" ) ;
234
254
done ( ) ;
235
255
} ) ;
@@ -240,7 +260,7 @@ describe("fieldSelect.vue", function() {
240
260
input . value = "4" ;
241
261
trigger ( input , "change" ) ;
242
262
243
- vm . $nextTick ( ( ) => {
263
+ vm . $nextTick ( ( ) => {
244
264
expect ( model . city ) . to . be . equal ( 4 ) ;
245
265
done ( ) ;
246
266
} ) ;
0 commit comments