Skip to content

Commit d0b5186

Browse files
committed
Add tests
1 parent 595eb1f commit d0b5186

File tree

3 files changed

+51
-5
lines changed

3 files changed

+51
-5
lines changed

src/components/Tab.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ module.exports = React.createClass({
7171
'ReactTabs__Tab',
7272
className,
7373
{
74-
[`${activeTabClassName}`]: selected,
75-
[`${disabledTabClassName}`]: disabled,
74+
[activeTabClassName]: selected,
75+
[disabledTabClassName]: disabled,
7676
}
7777
)}
7878
role="tab"

src/components/TabList.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,21 @@ module.exports = React.createClass({
1515

1616
propTypes: {
1717
className: PropTypes.string,
18+
activeTabClassName: PropTypes.string,
19+
disabledTabClassName: PropTypes.string,
1820
children: PropTypes.oneOfType([
1921
PropTypes.object,
2022
PropTypes.array,
2123
]),
2224
},
2325

2426
render() {
25-
const { className, ...attributes } = this.props;
27+
const {
28+
className,
29+
activeTabClassName,
30+
disabledTabClassName,
31+
children,
32+
...attributes } = this.props;
2633

2734
return (
2835
<ul
@@ -33,7 +40,7 @@ module.exports = React.createClass({
3340
)}
3441
role="tablist"
3542
>
36-
{renderChildren(this.props)}
43+
{renderChildren({ activeTabClassName, disabledTabClassName, children })}
3744
</ul>
3845
);
3946
},

src/components/__tests__/TabList-test.js

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
/* global jest, describe, it, expect */
22
import React from 'react';
3-
import { shallow } from 'enzyme';
3+
import { shallow, mount } from 'enzyme';
4+
import Tab from '../Tab';
45
import TabList from '../TabList';
6+
import Tabs from '../Tabs';
7+
8+
function hasClassAt(wrapper, index, className) {
9+
return wrapper.childAt(index).find('li').hasClass(className);
10+
}
511

612
describe('<TabList />', () => {
713
it('should have sane defaults', () => {
@@ -30,4 +36,37 @@ describe('<TabList />', () => {
3036

3137
expect(wrapper.prop('role')).toBe('tablist');
3238
});
39+
40+
it('should retain the default classnames for active and disabled tab', () => {
41+
const wrapper = mount(
42+
<Tabs selectedIndex={0}>
43+
<TabList>
44+
<Tab>Foo</Tab>
45+
<Tab disabled>Bar</Tab>
46+
</TabList>
47+
</Tabs>
48+
);
49+
50+
const tabsList = wrapper.childAt(0);
51+
expect(hasClassAt(tabsList, 0, 'ReactTabs__Tab--selected')).toBe(true);
52+
expect(hasClassAt(tabsList, 1, 'ReactTabs__Tab--disabled')).toBe(true);
53+
});
54+
55+
it('should display the custom classnames for active and disabled tab', () => {
56+
const wrapper = mount(
57+
<Tabs selectedIndex={0}>
58+
<TabList activeTabClassName="active" disabledTabClassName="disabled">
59+
<Tab>Foo</Tab>
60+
<Tab disabled>Bar</Tab>
61+
</TabList>
62+
</Tabs>
63+
);
64+
65+
const tabsList = wrapper.childAt(0);
66+
expect(hasClassAt(tabsList, 0, 'ReactTabs__Tab--selected')).toBe(false);
67+
expect(hasClassAt(tabsList, 1, 'ReactTabs__Tab--disabled')).toBe(false);
68+
69+
expect(hasClassAt(tabsList, 0, 'active')).toBe(true);
70+
expect(hasClassAt(tabsList, 1, 'disabled')).toBe(true);
71+
});
3372
});

0 commit comments

Comments
 (0)