@@ -9,11 +9,11 @@ Vue.component("FieldSelect", FieldSelect);
99let el , vm , field ;
1010
1111function 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 ) ;
1313}
1414
1515
16- describe ( "fieldSelect.vue" , function ( ) {
16+ describe ( "fieldSelect.vue" , function ( ) {
1717
1818 describe ( "check template" , ( ) => {
1919 let schema = {
@@ -31,7 +31,7 @@ describe("fieldSelect.vue", function() {
3131 let model = { city : "Paris" } ;
3232 let input ;
3333
34- before ( ( ) => {
34+ before ( ( ) => {
3535 createField ( this , schema , model , false ) ;
3636 input = el . getElementsByTagName ( "select" ) [ 0 ] ;
3737 } ) ;
@@ -60,7 +60,7 @@ describe("fieldSelect.vue", function() {
6060 } ) ;
6161
6262 it ( "should contain the value" , ( done ) => {
63- vm . $nextTick ( ( ) => {
63+ vm . $nextTick ( ( ) => {
6464 expect ( input . value ) . to . be . equal ( "Paris" ) ;
6565 done ( ) ;
6666 } ) ;
@@ -69,16 +69,16 @@ describe("fieldSelect.vue", function() {
6969 describe ( "check optional attribute" , ( ) => {
7070 let attributes = [ "disabled" , "inputName" ] ;
7171
72- attributes . forEach ( function ( name ) {
73- it ( "should set " + name , function ( done ) {
72+ attributes . forEach ( function ( name ) {
73+ it ( "should set " + name , function ( done ) {
7474 checkAttribute ( name , vm , input , field , schema , done ) ;
7575 } ) ;
7676 } ) ;
7777 } ) ;
7878
7979 it ( "input value should be the model value after changed" , ( done ) => {
8080 model . city = "Rome" ;
81- vm . $nextTick ( ( ) => {
81+ vm . $nextTick ( ( ) => {
8282 expect ( input . value ) . to . be . equal ( "Rome" ) ;
8383 done ( ) ;
8484 } ) ;
@@ -89,7 +89,7 @@ describe("fieldSelect.vue", function() {
8989 input . value = "London" ;
9090 trigger ( input , "change" ) ;
9191
92- vm . $nextTick ( ( ) => {
92+ vm . $nextTick ( ( ) => {
9393 expect ( model . city ) . to . be . equal ( "London" ) ;
9494 done ( ) ;
9595 } ) ;
@@ -98,7 +98,7 @@ describe("fieldSelect.vue", function() {
9898
9999 it ( "should contain a disabled <non selected> element if required" , ( done ) => {
100100 schema . required = true ;
101- vm . $nextTick ( ( ) => {
101+ vm . $nextTick ( ( ) => {
102102 let options = input . querySelectorAll ( "option" ) ;
103103 expect ( options [ 0 ] . disabled ) . to . be . true ;
104104 expect ( options [ 0 ] . textContent ) . to . be . equal ( "<Nothing selected>" ) ;
@@ -110,7 +110,7 @@ describe("fieldSelect.vue", function() {
110110 Vue . set ( vm . schema , "selectOptions" , {
111111 noneSelectedText : "Empty list"
112112 } ) ;
113- vm . $nextTick ( ( ) => {
113+ vm . $nextTick ( ( ) => {
114114 let options = input . querySelectorAll ( "option" ) ;
115115 expect ( options [ 0 ] . disabled ) . to . be . true ;
116116 expect ( options [ 0 ] . textContent ) . to . be . equal ( "Empty list" ) ;
@@ -126,7 +126,7 @@ describe("fieldSelect.vue", function() {
126126 noneSelectedText : "Empty list" ,
127127 hideNoneSelectedText : true
128128 } ) ;
129- vm . $nextTick ( ( ) => {
129+ vm . $nextTick ( ( ) => {
130130 let options = input . querySelectorAll ( "option" ) ;
131131 expect ( options [ 0 ] . disabled ) . to . be . false ;
132132 expect ( options [ 0 ] . textContent ) . to . not . be . equal ( "Empty list" ) ;
@@ -148,37 +148,57 @@ describe("fieldSelect.vue", function() {
148148 { id : 1 , name : "London" } ,
149149 { id : 2 , name : "Paris" } ,
150150 { 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" } ,
152154 ]
153155 } ;
154156 let model = { city : 2 } ;
155157 let input ;
156158
157- before ( ( ) => {
159+ before ( ( ) => {
158160 createField ( this , schema , model , false ) ;
159161 input = el . getElementsByTagName ( "select" ) [ 0 ] ;
160162 } ) ;
161163
162164 it ( "should contain option elements" , ( ) => {
163165 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>
165167
166168 expect ( options [ 2 ] . value ) . to . be . equal ( "2" ) ;
167169 expect ( options [ 2 ] . textContent ) . to . be . equal ( "Paris" ) ;
168170 expect ( options [ 2 ] . selected ) . to . be . true ;
169171 expect ( options [ 1 ] . selected ) . to . be . false ;
170172 } ) ;
171173
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+
172192 it ( "should contain the value" , ( done ) => {
173- vm . $nextTick ( ( ) => {
193+ vm . $nextTick ( ( ) => {
174194 expect ( input . value ) . to . be . equal ( "2" ) ;
175195 done ( ) ;
176196 } ) ;
177197 } ) ;
178198
179199 it ( "input value should be the model value after changed" , ( done ) => {
180200 model . city = 3 ;
181- vm . $nextTick ( ( ) => {
201+ vm . $nextTick ( ( ) => {
182202 expect ( input . value ) . to . be . equal ( "3" ) ;
183203 done ( ) ;
184204 } ) ;
@@ -189,7 +209,7 @@ describe("fieldSelect.vue", function() {
189209 input . value = "4" ;
190210 trigger ( input , "change" ) ;
191211
192- vm . $nextTick ( ( ) => {
212+ vm . $nextTick ( ( ) => {
193213 expect ( model . city ) . to . be . equal ( 4 ) ;
194214 done ( ) ;
195215 } ) ;
@@ -215,21 +235,21 @@ describe("fieldSelect.vue", function() {
215235 let model = { city : 2 } ;
216236 let input ;
217237
218- before ( ( ) => {
238+ before ( ( ) => {
219239 createField ( this , schema , model , false ) ;
220240 input = el . getElementsByTagName ( "select" ) [ 0 ] ;
221241 } ) ;
222242
223243 it ( "should contain the value" , ( done ) => {
224- vm . $nextTick ( ( ) => {
244+ vm . $nextTick ( ( ) => {
225245 expect ( input . value ) . to . be . equal ( "2" ) ;
226246 done ( ) ;
227247 } ) ;
228248 } ) ;
229249
230250 it ( "input value should be the model value after changed" , ( done ) => {
231251 model . city = 3 ;
232- vm . $nextTick ( ( ) => {
252+ vm . $nextTick ( ( ) => {
233253 expect ( input . value ) . to . be . equal ( "3" ) ;
234254 done ( ) ;
235255 } ) ;
@@ -240,7 +260,7 @@ describe("fieldSelect.vue", function() {
240260 input . value = "4" ;
241261 trigger ( input , "change" ) ;
242262
243- vm . $nextTick ( ( ) => {
263+ vm . $nextTick ( ( ) => {
244264 expect ( model . city ) . to . be . equal ( 4 ) ;
245265 done ( ) ;
246266 } ) ;
0 commit comments