@@ -233,6 +233,73 @@ describe('form-spinbutton', () => {
233
233
wrapper . destroy ( )
234
234
} )
235
235
236
+ it ( 'basic +/- buttons click' , async ( ) => {
237
+ const wrapper = mount ( BFormSpinbutton )
238
+ expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
239
+ await waitNT ( wrapper . vm )
240
+ await waitRAF ( )
241
+
242
+ const $output = wrapper . find ( 'output' )
243
+ expect ( $output . exists ( ) ) . toBe ( true )
244
+ expect ( $output . attributes ( 'role' ) ) . toEqual ( 'spinbutton' )
245
+ expect ( $output . attributes ( 'tabindex' ) ) . toEqual ( '0' )
246
+ expect ( $output . attributes ( 'aria-live' ) ) . toEqual ( 'off' )
247
+ expect ( $output . attributes ( 'aria-valuemin' ) ) . toEqual ( '1' )
248
+ expect ( $output . attributes ( 'aria-valuemax' ) ) . toEqual ( '100' )
249
+ // These two attribute should exist on the element
250
+ expect ( $output . element . hasAttribute ( 'aria-valuenow' ) ) . toBe ( false )
251
+ expect ( $output . element . hasAttribute ( 'aria-valuetext' ) ) . toBe ( false )
252
+ expect ( $output . find ( 'div' ) . exists ( ) ) . toBe ( true )
253
+
254
+ const $increment = wrapper . find ( '[aria-label="Increment"]' )
255
+ expect ( $increment . exists ( ) ) . toBe ( true )
256
+ const $decrement = wrapper . find ( '[aria-label="Decrement"]' )
257
+ expect ( $decrement . exists ( ) ) . toBe ( true )
258
+
259
+ $increment . trigger ( 'mousedown' )
260
+ $increment . trigger ( 'mouseup' )
261
+ await waitNT ( wrapper . vm )
262
+ await waitRAF ( )
263
+
264
+ expect ( $output . attributes ( 'aria-valuemin' ) ) . toEqual ( '1' )
265
+ expect ( $output . attributes ( 'aria-valuemax' ) ) . toEqual ( '100' )
266
+ expect ( $output . attributes ( 'aria-valuenow' ) ) . toEqual ( '1' )
267
+ expect ( $output . attributes ( 'aria-valuetext' ) ) . toEqual ( '1' )
268
+
269
+ $increment . trigger ( 'mousedown' )
270
+ $increment . trigger ( 'mouseup' )
271
+ await waitNT ( wrapper . vm )
272
+ await waitRAF ( )
273
+
274
+ expect ( $output . attributes ( 'aria-valuemin' ) ) . toEqual ( '1' )
275
+ expect ( $output . attributes ( 'aria-valuemax' ) ) . toEqual ( '100' )
276
+ expect ( $output . attributes ( 'aria-valuenow' ) ) . toEqual ( '2' )
277
+ expect ( $output . attributes ( 'aria-valuetext' ) ) . toEqual ( '2' )
278
+
279
+ $decrement . trigger ( 'mousedown' )
280
+ $decrement . trigger ( 'mouseup' )
281
+ await waitNT ( wrapper . vm )
282
+ await waitRAF ( )
283
+
284
+ expect ( $output . attributes ( 'aria-valuemin' ) ) . toEqual ( '1' )
285
+ expect ( $output . attributes ( 'aria-valuemax' ) ) . toEqual ( '100' )
286
+ expect ( $output . attributes ( 'aria-valuenow' ) ) . toEqual ( '1' )
287
+ expect ( $output . attributes ( 'aria-valuetext' ) ) . toEqual ( '1' )
288
+
289
+ $decrement . trigger ( 'mousedown' )
290
+ $decrement . trigger ( 'mouseup' )
291
+ await waitNT ( wrapper . vm )
292
+ await waitRAF ( )
293
+
294
+ expect ( $output . attributes ( 'aria-valuemin' ) ) . toEqual ( '1' )
295
+ expect ( $output . attributes ( 'aria-valuemax' ) ) . toEqual ( '100' )
296
+ // wrap is off so it should not change to 1
297
+ expect ( $output . attributes ( 'aria-valuenow' ) ) . toEqual ( '1' )
298
+ expect ( $output . attributes ( 'aria-valuetext' ) ) . toEqual ( '1' )
299
+
300
+ wrapper . destroy ( )
301
+ } )
302
+
236
303
it ( 'basic keyboard control works' , async ( ) => {
237
304
const wrapper = mount ( BFormSpinbutton )
238
305
expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
0 commit comments