Skip to content

Commit 2c9839d

Browse files
committed
chore: Add more tests for uncovered parts
1 parent 41eb27f commit 2c9839d

File tree

3 files changed

+59
-3
lines changed

3 files changed

+59
-3
lines changed

codecov.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
coverage:
2+
parsers:
3+
javascript:
4+
enable_partials: yes

src/components/UncontrolledTabs.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ function determineCanUseActiveElement(environment) {
3838
// Refer to the following resources:
3939
// http://stackoverflow.com/a/10982960/369687
4040
// https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12733599
41+
// istanbul ignore next
4142
canUseActiveElement = false;
4243
}
4344
}
@@ -265,13 +266,16 @@ const UncontrolledTabs = (props) => {
265266
let preventDefault = false;
266267
let useSelectedIndex = false;
267268

268-
if (e.keyCode === 32 || e.keyCode === 13) {
269+
if (e.keyCode === 32 /* space */ || e.keyCode === 13 /* enter */) {
269270
preventDefault = true;
270271
useSelectedIndex = false;
271272
handleClick(e);
272273
}
273274

274-
if (e.keyCode === 37 || (!disableUpDownKeys && e.keyCode === 38)) {
275+
if (
276+
e.keyCode === 37 /* arrow left */ ||
277+
(!disableUpDownKeys && e.keyCode === 38) /* arrow up */
278+
) {
275279
// Select next tab to the left, validate if up arrow is not disabled
276280
if (direction === 'rtl') {
277281
index = getNextTab(index);
@@ -280,7 +284,10 @@ const UncontrolledTabs = (props) => {
280284
}
281285
preventDefault = true;
282286
useSelectedIndex = true;
283-
} else if (e.keyCode === 39 || (!disableUpDownKeys && e.keyCode === 40)) {
287+
} else if (
288+
e.keyCode === 39 /* arrow right */ ||
289+
(!disableUpDownKeys && e.keyCode === 40) /* arrow down */
290+
) {
284291
// Select next tab to the right, validate if down arrow is not disabled
285292
if (direction === 'rtl') {
286293
index = getPrevTab(index);

src/components/__tests__/Tabs-test.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,42 @@ describe('<Tabs />', () => {
156156
assertTabSelected(2);
157157
});
158158

159+
test('should overflow when arrow right key pressed and no right tab available', () => {
160+
render(createTabs());
161+
const element = screen.getByTestId('tab3');
162+
userEvent.click(element);
163+
userEvent.type(element, '{arrowright}');
164+
165+
assertTabSelected(1);
166+
});
167+
168+
test('should overflow when arrow left key pressed and no left tab available', () => {
169+
render(createTabs());
170+
const element = screen.getByTestId('tab1');
171+
userEvent.click(element);
172+
userEvent.type(element, '{arrowleft}');
173+
174+
assertTabSelected(3);
175+
});
176+
177+
test('should move to first tab on home key', () => {
178+
render(createTabs());
179+
const element = screen.getByTestId('tab3');
180+
userEvent.click(element);
181+
userEvent.type(element, '{home}');
182+
183+
assertTabSelected(1);
184+
});
185+
186+
test('should move to first tab on end key', () => {
187+
render(createTabs());
188+
const element = screen.getByTestId('tab1');
189+
userEvent.click(element);
190+
userEvent.type(element, '{end}');
191+
192+
assertTabSelected(3);
193+
});
194+
159195
test('should update selectedIndex when arrow left key pressed (RTL)', () => {
160196
render(createTabs({ direction: 'rtl' }));
161197
const element = screen.getByTestId('tab1');
@@ -165,6 +201,15 @@ describe('<Tabs />', () => {
165201
assertTabSelected(2);
166202
});
167203

204+
test('should update selectedIndex when arrow right key pressed (RTL)', () => {
205+
render(createTabs({ direction: 'rtl' }));
206+
const element = screen.getByTestId('tab2');
207+
userEvent.click(element);
208+
userEvent.type(element, '{arrowright}');
209+
210+
assertTabSelected(1);
211+
});
212+
168213
test.skip('should not change selectedIndex when arrow left key pressed on a disabled tab', () => {
169214
render(createTabs());
170215
const element = screen.getByTestId('tab4');

0 commit comments

Comments
 (0)