@@ -138,10 +138,13 @@ describe('Tabs', () => {
138138 // Silent to remove out logs in terminal
139139 }
140140 let spy = sinon . spy ( window , 'alert' )
141- utils . triggerEvent ( nav . querySelectorAll ( 'li' ) [ 2 ] . querySelector ( 'a' ) , 'click' )
141+ utils . triggerEvent ( nav . querySelectorAll ( 'li > a ' ) [ 1 ] , 'click' )
142142 await vm . $nextTick ( )
143143 await utils . sleep ( 350 )
144- sinon . assert . called ( spy )
144+ utils . triggerEvent ( nav . querySelectorAll ( 'li > a' ) [ 2 ] , 'click' )
145+ await vm . $nextTick ( )
146+ await utils . sleep ( 350 )
147+ sinon . assert . calledOnce ( spy )
145148 window . alert = _savedAlert
146149 } )
147150
@@ -233,4 +236,60 @@ describe('Tabs', () => {
233236 expect ( activeContent . length ) . to . equal ( 1 )
234237 expect ( activeContent [ 0 ] . textContent ) . to . contain ( 'Tab 0' )
235238 } )
239+
240+ it ( 'should be able to select dynamic tab' , async ( ) => {
241+ let _vm = vm . $refs [ 'tabs-dynamic-example' ]
242+ let $el = $ ( _vm . $el )
243+ let nav = $el . find ( '.nav-tabs' ) . get ( 0 )
244+ let content = $el . find ( '.tab-content' ) . get ( 0 )
245+ let pushBtn = $el . find ( '.btn' ) . get ( 0 )
246+ let popBtn = $el . find ( '.btn' ) . get ( 1 )
247+ await vm . $nextTick ( )
248+ await vm . $nextTick ( )
249+ // Add a tab
250+ pushBtn . click ( )
251+ await vm . $nextTick ( )
252+ pushBtn . click ( )
253+ await vm . $nextTick ( )
254+ pushBtn . click ( )
255+ await vm . $nextTick ( )
256+ await utils . sleep ( 350 )
257+ expect ( nav . querySelectorAll ( 'li' ) . length ) . to . equal ( 4 )
258+ _vm . index = 1
259+ await vm . $nextTick ( )
260+ await utils . sleep ( 350 )
261+ // check active tab
262+ let activeTab = nav . querySelectorAll ( '.active' )
263+ expect ( activeTab . length ) . to . equal ( 1 )
264+ expect ( activeTab [ 0 ] . querySelector ( 'a' ) . textContent ) . to . equal ( 'Tab 1' )
265+ // check active content
266+ let activeContent = content . querySelectorAll ( '.tab-pane.active' )
267+ expect ( activeContent . length ) . to . equal ( 1 )
268+ expect ( activeContent [ 0 ] . textContent ) . to . contain ( 'Tab 1' )
269+ popBtn . click ( )
270+ await vm . $nextTick ( )
271+ await utils . sleep ( 350 )
272+ expect ( nav . querySelectorAll ( 'li' ) . length ) . to . equal ( 3 )
273+ // check active tab
274+ activeTab = nav . querySelectorAll ( '.active' )
275+ expect ( activeTab . length ) . to . equal ( 1 )
276+ expect ( activeTab [ 0 ] . querySelector ( 'a' ) . textContent ) . to . equal ( 'Tab 1' )
277+ // check active content
278+ activeContent = content . querySelectorAll ( '.tab-pane.active' )
279+ expect ( activeContent . length ) . to . equal ( 1 )
280+ expect ( activeContent [ 0 ] . textContent ) . to . contain ( 'Tab 1' )
281+ // switch tab
282+ let tab2 = nav . querySelectorAll ( 'li' ) [ 2 ]
283+ utils . triggerEvent ( tab2 . querySelector ( 'a' ) , 'click' )
284+ await vm . $nextTick ( )
285+ await utils . sleep ( 350 )
286+ // check active tab
287+ activeTab = nav . querySelectorAll ( '.active' )
288+ expect ( activeTab . length ) . to . equal ( 1 )
289+ expect ( activeTab [ 0 ] . querySelector ( 'a' ) . textContent ) . to . equal ( 'Tab 2' )
290+ // check active content
291+ activeContent = content . querySelectorAll ( '.tab-pane.active' )
292+ expect ( activeContent . length ) . to . equal ( 1 )
293+ expect ( activeContent [ 0 ] . textContent ) . to . contain ( 'Tab 2' )
294+ } )
236295} )
0 commit comments