@@ -121,4 +121,59 @@ describe('Tabs', () => {
121121 expect ( getByText ( 'Tab 1' ) ) . toBeInTheDocument ( ) ;
122122 expect ( getByText ( 'Tab 1 Content' ) ) . toBeInTheDocument ( ) ;
123123 } ) ;
124+
125+ it ( 'renders disabled tab with proper styling' , ( ) => {
126+ const { getByText } = render (
127+ < Tabs defaultActiveTabKey = "" onTabClick = { ( ) => null } >
128+ < Tab tabKey = "tab1" name = "Tab 1" >
129+ Tab 1 Content
130+ </ Tab >
131+ < Tab tabKey = "tab2" name = "Tab 2" disabled >
132+ Tab 2 Content
133+ </ Tab >
134+ </ Tabs > ,
135+ ) ;
136+
137+ const disabledTab = getByText ( 'Tab 2' ) . closest ( 'li' ) ;
138+ expect ( disabledTab ) . toHaveClass ( 'tab--disabled' ) ;
139+
140+ const disabledButton = getByText ( 'Tab 2' ) . closest ( 'button' ) ;
141+ expect ( disabledButton ) . toHaveAttribute ( 'disabled' ) ;
142+ } ) ;
143+
144+ it ( 'does not switch to disabled tab when clicked' , ( ) => {
145+ const { getByText, queryByText } = render (
146+ < Tabs defaultActiveTabKey = "tab1" onTabClick = { ( ) => null } >
147+ < Tab tabKey = "tab1" name = "Tab 1" >
148+ Tab 1 Content
149+ </ Tab >
150+ < Tab tabKey = "tab2" name = "Tab 2" disabled >
151+ Tab 2 Content
152+ </ Tab >
153+ </ Tabs > ,
154+ ) ;
155+
156+ fireEvent . click ( getByText ( 'Tab 2' ) ) ;
157+
158+ expect ( getByText ( 'Tab 1 Content' ) ) . toBeInTheDocument ( ) ;
159+ expect ( queryByText ( 'Tab 2 Content' ) ) . not . toBeInTheDocument ( ) ;
160+ } ) ;
161+
162+ it ( 'does not call onTabClick when disabled tab is clicked' , ( ) => {
163+ const onTabClick = jest . fn ( ) ;
164+ const { getByText } = render (
165+ < Tabs defaultActiveTabKey = "tab1" onTabClick = { onTabClick } >
166+ < Tab tabKey = "tab1" name = "Tab 1" >
167+ Tab 1 Content
168+ </ Tab >
169+ < Tab tabKey = "tab2" name = "Tab 2" disabled >
170+ Tab 2 Content
171+ </ Tab >
172+ </ Tabs > ,
173+ ) ;
174+
175+ fireEvent . click ( getByText ( 'Tab 2' ) ) ;
176+
177+ expect ( onTabClick ) . not . toHaveBeenCalled ( ) ;
178+ } ) ;
124179} ) ;
0 commit comments