@@ -13,16 +13,73 @@ describe('tab-container', function() {
1313
1414 describe ( 'after tree insertion' , function ( ) {
1515 beforeEach ( function ( ) {
16- document . body . innerHTML = '<tab-container>Tabs go here</tab-container>'
16+ document . body . innerHTML = `
17+ <tab-container>
18+ <div role="tablist">
19+ <button type="button" role="tab" aria-selected="true">Tab one</button>
20+ <button type="button" role="tab">Tab two</button>
21+ <button type="button" role="tab">Tab three</button>
22+ </div>
23+ <div role="tabpanel">
24+ Panel 1
25+ </div>
26+ <div role="tabpanel" hidden>
27+ Panel 2
28+ </div>
29+ <div role="tabpanel" hidden>
30+ Panel 3
31+ </div>
32+ </tab-container>
33+ `
1734 } )
1835
1936 afterEach ( function ( ) {
2037 document . body . innerHTML = ''
2138 } )
2239
23- it ( 'initiates' , function ( ) {
24- const ce = document . querySelector ( 'tab-container' )
25- assert . equal ( ce . textContent , 'Tabs go here' )
40+ it ( 'click works and event is dispatched' , function ( ) {
41+ const tabContainer = document . querySelector ( 'tab-container' )
42+ const tabs = document . querySelectorAll ( 'button' )
43+ const panels = document . querySelectorAll ( '[role="tabpanel"]' )
44+ let counter = 0
45+ tabContainer . addEventListener ( 'tab-container-change' , event => {
46+ counter ++
47+ assert . equal ( event . detail . relatedTarget , panels [ 1 ] )
48+ } )
49+
50+ tabs [ 1 ] . click ( )
51+ assert ( panels [ 0 ] . hidden )
52+ assert ( ! panels [ 1 ] . hidden )
53+ assert . equal ( counter , 1 )
54+ assert . equal ( document . activeElement , tabs [ 1 ] )
55+ } )
56+
57+ it ( 'keyboard shortcuts work and events are dispatched' , function ( ) {
58+ const tabContainer = document . querySelector ( 'tab-container' )
59+ const tabs = document . querySelectorAll ( 'button' )
60+ const panels = document . querySelectorAll ( '[role="tabpanel"]' )
61+ let counter = 0
62+ tabContainer . addEventListener ( 'tab-container-change' , ( ) => counter ++ )
63+
64+ tabs [ 0 ] . dispatchEvent ( new KeyboardEvent ( 'keydown' , { code : 'ArrowLeft' , bubbles : true } ) )
65+ assert ( panels [ 0 ] . hidden )
66+ assert ( ! panels [ 2 ] . hidden )
67+ assert . equal ( document . activeElement , tabs [ 2 ] )
68+
69+ tabs [ 0 ] . dispatchEvent ( new KeyboardEvent ( 'keydown' , { code : 'Home' , bubbles : true } ) )
70+ assert ( ! panels [ 0 ] . hidden )
71+ assert ( panels [ 2 ] . hidden )
72+ assert . equal ( document . activeElement , tabs [ 0 ] )
73+ assert . equal ( counter , 2 )
74+ } )
75+
76+ it ( 'selectTab(index) works' , function ( ) {
77+ const tabContainer = document . querySelector ( 'tab-container' )
78+ const panels = document . querySelectorAll ( '[role="tabpanel"]' )
79+
80+ tabContainer . selectTab ( 2 )
81+ assert ( panels [ 0 ] . hidden )
82+ assert ( ! panels [ 2 ] . hidden )
2683 } )
2784 } )
2885} )
0 commit comments