Skip to content

Commit 150fbb0

Browse files
committed
Migrate from Enzyme to React Testing Library
Also upgrade to React 18 in testing.
1 parent 2bac1cd commit 150fbb0

File tree

10 files changed

+400
-373
lines changed

10 files changed

+400
-373
lines changed

examples/src/index.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from 'react';
2-
import ReactDOM from 'react-dom';
2+
import { createRoot } from 'react-dom/client';
33

44
import BasicExample from './js/BasicExample';
55
import CustomIconsExample from './js/CustomIconsExample';
@@ -12,13 +12,13 @@ import LargeDataExample from './js/LargeDataExample';
1212
import PessimisticToggleExample from './js/PessimisticToggleExample';
1313
import FilterExample from './js/FilterExample';
1414

15-
ReactDOM.render(<BasicExample />, document.getElementById('basic-example'));
16-
ReactDOM.render(<CustomIconsExample />, document.getElementById('custom-icons-example'));
17-
ReactDOM.render(<DisabledExample />, document.getElementById('disabled-example'));
18-
ReactDOM.render(<NoCascadeExample />, document.getElementById('no-cascade-example'));
19-
ReactDOM.render(<PessimisticToggleExample />, document.getElementById('pessimistic-toggle-example'));
20-
ReactDOM.render(<ClickableLabelsExample />, document.getElementById('clickable-labels-example'));
21-
ReactDOM.render(<HiddenCheckboxesExample />, document.getElementById('hidden-checkboxes-example'));
22-
ReactDOM.render(<ExpandAllExample />, document.getElementById('expand-all-example'));
23-
ReactDOM.render(<LargeDataExample />, document.getElementById('large-data-example'));
24-
ReactDOM.render(<FilterExample />, document.getElementById('filter-example'));
15+
createRoot(document.getElementById('basic-example')).render(<BasicExample />);
16+
createRoot(document.getElementById('custom-icons-example')).render(<CustomIconsExample />);
17+
createRoot(document.getElementById('disabled-example')).render(<DisabledExample />);
18+
createRoot(document.getElementById('no-cascade-example')).render(<NoCascadeExample />);
19+
createRoot(document.getElementById('pessimistic-toggle-example')).render(<PessimisticToggleExample />);
20+
createRoot(document.getElementById('clickable-labels-example')).render(<ClickableLabelsExample />);
21+
createRoot(document.getElementById('hidden-checkboxes-example')).render(<HiddenCheckboxesExample />);
22+
createRoot(document.getElementById('expand-all-example')).render(<ExpandAllExample />);
23+
createRoot(document.getElementById('large-data-example')).render(<LargeDataExample />);
24+
createRoot(document.getElementById('filter-example')).render(<FilterExample />);

gulpfile.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ gulp.task('test-script-mocha', () => (
3737
require: [
3838
'@babel/register',
3939
'global-jsdom/register',
40-
'./test/setup.js',
4140
],
4241
exit: true,
4342
}))

package.json

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,16 @@
3131
"devDependencies": {
3232
"@babel/core": "^7.0.0",
3333
"@babel/eslint-parser": "^7.13.10",
34-
"@babel/plugin-proposal-class-properties": "^7.0.0",
3534
"@babel/preset-env": "^7.0.0",
3635
"@babel/preset-react": "^7.0.0",
3736
"@babel/register": "^7.0.0",
37+
"@testing-library/dom": "^8.20.0",
38+
"@testing-library/react": "^13.4.0",
39+
"@testing-library/user-event": "^14.4.3",
3840
"@types/react": "^18.0.18",
39-
"@wojtekmaj/enzyme-adapter-react-17": "^0.7.0",
4041
"babel-loader": "^9.0.0",
4142
"browser-sync": "^2.18.6",
4243
"chai": "^4.0.0",
43-
"enzyme": "^3.0.0",
4444
"eslint": "^8.23.0",
4545
"eslint-config-takiyon-react": "^2.0.0",
4646
"eslint-import-resolver-webpack": "^0.13.0",
@@ -61,11 +61,10 @@
6161
"gulp-stylelint": "^13.0.0",
6262
"jsdom": "^21.0.0",
6363
"mocha": "^10.0.0",
64-
"react": "^17.0.2",
65-
"react-dom": "^17.0.2",
66-
"react-test-renderer": "^18.2.0",
64+
"react": "^18.2.0",
65+
"react-dom": "^18.2.0",
6766
"sass": "^1.28.0",
68-
"stylelint": "^15.0.0",
67+
"stylelint": "^15.1.0",
6968
"stylelint-config-takiyon": "^2.0.4",
7069
"webpack": "^5.3.2",
7170
"webpack-stream": "^7.0.0"
@@ -75,8 +74,5 @@
7574
"lodash": "^4.17.10",
7675
"nanoid": "^3.0.0",
7776
"prop-types": "^15.5.8"
78-
},
79-
"overrides": {
80-
"cheerio": "=1.0.0-rc.3"
8177
}
8278
}

src/js/TreeNode.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class TreeNode extends React.PureComponent {
4444
icon: null,
4545
showCheckbox: true,
4646
title: null,
47-
onClick: () => {},
47+
onClick: null,
4848
};
4949

5050
constructor(props) {

test/.eslintrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
"mocha": true
44
},
55
"rules": {
6+
"no-console": ["warn", {
7+
"allow": ["error"]
8+
}],
69
"react/jsx-props-no-spreading": "off"
710
}
811
}

test/Button.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,42 @@
11
import React from 'react';
2-
import { shallow } from 'enzyme';
32
import { assert } from 'chai';
3+
import { render, screen } from '@testing-library/react';
44

55
import Button from '../src/js/Button';
66

77
describe('<Button />', () => {
88
describe('title', () => {
99
it('should copy `title` to `aria-label`', () => {
10-
const wrapper = shallow((
10+
render((
1111
<Button title="Collapse">
1212
Collapse
1313
</Button>
1414
));
1515

16-
assert.equal('Collapse', wrapper.find('button').prop('aria-label'));
16+
const button = screen.getByText('Collapse');
17+
assert.equal(button.getAttribute('aria-label'), 'Collapse');
1718
});
1819

1920
it('should set `type` to `button`', () => {
20-
const wrapper = shallow((
21+
render((
2122
<Button>
2223
Basic Button
2324
</Button>
2425
));
2526

26-
assert.equal('button', wrapper.find('button').prop('type'));
27+
const button = screen.getByText('Basic Button');
28+
assert.equal(button.type, 'button');
2729
});
2830

2931
it('should pass extra properties to the base button', () => {
30-
const wrapper = shallow((
32+
render((
3133
<Button className="btn">
3234
Basic Button
3335
</Button>
3436
));
3537

36-
assert.equal('btn', wrapper.find('button').prop('className'));
38+
const button = screen.getByText('Basic Button');
39+
assert.equal(button.className, 'btn');
3740
});
3841
});
3942
});

0 commit comments

Comments
 (0)