Skip to content

Commit 35a1da1

Browse files
Haroenvbobylito
authored andcommitted
chore: modernise some tests (#2652)
* test: setup jest snapshots * test(RefinementListItem): use enzyme * test(Stats): use enzyme * test(autoHideContainer): use modern jest * chore: switch to enzyme * chore: remove manual jest snapshot setup
1 parent d3a213b commit 35a1da1

File tree

8 files changed

+91
-83
lines changed

8 files changed

+91
-83
lines changed

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@
137137
"<rootDir>/node_modules/",
138138
"<rootDir>/dist*",
139139
"<rootDir>/functional-tests"
140+
],
141+
"snapshotSerializers": [
142+
"enzyme-to-json/serializer"
140143
]
141144
},
142145
"bundlesize": [

src/components/RangeInput/__tests__/RangeInput-test.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import React from 'react';
22
import { shallow } from 'enzyme';
3-
import serializer from 'enzyme-to-json/serializer';
43
import { RawRangeInput } from '../RangeInput';
54

6-
expect.addSnapshotSerializer(serializer);
7-
85
describe('RawRangeInput', () => {
96
const defaultProps = {
107
min: 0,
Lines changed: 18 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,32 @@
11
import React from 'react';
2-
import { createRenderer } from 'react-test-renderer/shallow';
2+
import { shallow } from 'enzyme';
33
import RefinementListItem from '../RefinementListItem';
4-
import Template from '../../Template';
5-
import sinon from 'sinon';
6-
import expect from 'expect';
7-
import expectJSX from 'expect-jsx';
8-
expect.extend(expectJSX);
9-
describe('RefinementListItem', () => {
10-
let renderer;
11-
let props;
124

13-
beforeEach(() => {
14-
props = {
15-
facetValue: 'Hello',
16-
facetValueToRefine: 'wi',
17-
isRefined: false,
18-
handleClick: sinon.spy(),
19-
itemClassName: 'item class',
20-
templateData: { template: 'data' },
21-
templateKey: 'item key',
22-
templateProps: { template: 'props' },
23-
subItems: <div />,
24-
};
25-
renderer = createRenderer();
26-
});
5+
describe('RefinementListItem', () => {
6+
const props = {
7+
facetValue: 'Hello',
8+
facetValueToRefine: 'wi',
9+
isRefined: false,
10+
handleClick: jest.fn(),
11+
itemClassName: 'item class',
12+
templateData: { template: 'data' },
13+
templateKey: 'item key',
14+
templateProps: { template: 'props' },
15+
subItems: <div />,
16+
};
2717

2818
it('renders an item', () => {
29-
const out = render(props);
30-
31-
expect(out).toEqualJSX(
32-
<div className={props.itemClassName} onClick={props.handleClick}>
33-
<Template
34-
data={props.templateData}
35-
templateKey={props.templateKey}
36-
{...props.templateProps}
37-
/>
38-
{props.subItems}
39-
</div>
40-
);
19+
const wrapper = shallow(<RefinementListItem {...props} />);
20+
expect(wrapper).toMatchSnapshot();
4121
});
4222

4323
it('calls the right function', () => {
4424
const out = render(props);
45-
out.props.onClick();
46-
expect(props.handleClick.calledOnce).toBe(true);
25+
out.simulate('click');
26+
expect(props.handleClick).toHaveBeenCalledTimes(1);
4727
});
4828

4929
function render(askedProps) {
50-
renderer.render(<RefinementListItem {...askedProps} />);
51-
return renderer.getRenderOutput();
30+
return shallow(<RefinementListItem {...askedProps} />);
5231
}
5332
});
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`RefinementListItem renders an item 1`] = `
4+
<div
5+
className="item class"
6+
onClick={[Function]}
7+
>
8+
<Component
9+
data={
10+
Object {
11+
"template": "data",
12+
}
13+
}
14+
template="props"
15+
templateKey="item key"
16+
/>
17+
<div />
18+
</div>
19+
`;

src/components/Stats/__tests__/Stats-test.js

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,21 @@
11
import React from 'react';
2-
import expect from 'expect';
3-
import { createRenderer } from 'react-test-renderer/shallow';
2+
import { shallow } from 'enzyme';
43
import { RawStats as Stats } from '../Stats';
5-
import Template from '../../Template';
6-
7-
import expectJSX from 'expect-jsx';
8-
expect.extend(expectJSX);
94

105
describe('Stats', () => {
11-
let renderer;
12-
13-
beforeEach(() => {
14-
renderer = createRenderer();
15-
});
16-
176
it('should render <Template data= />', () => {
18-
const out = render();
7+
const out = shallow(<Stats {...getProps()} templateProps={{}} />);
8+
199
const defaultProps = {
2010
cssClasses: {},
2111
hasManyResults: true,
2212
hasNoResults: false,
2313
hasOneResult: false,
2414
};
25-
expect(out).toEqualJSX(
26-
<Template data={getProps(defaultProps)} templateKey="body" />
27-
);
15+
expect(out.props().data).toMatchObject(defaultProps);
16+
expect(out).toMatchSnapshot();
2817
});
2918

30-
function render(extraProps = {}) {
31-
const props = getProps(extraProps);
32-
renderer.render(<Stats {...props} templateProps={{}} />);
33-
return renderer.getRenderOutput();
34-
}
35-
3619
function getProps(extraProps = {}) {
3720
return {
3821
cssClasses: {},
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Stats should render <Template data= /> 1`] = `
4+
<Component
5+
data={
6+
Object {
7+
"cssClasses": Object {},
8+
"hasManyResults": true,
9+
"hasNoResults": false,
10+
"hasOneResult": false,
11+
"hitsPerPage": 10,
12+
"nbHits": 1234,
13+
"nbPages": 124,
14+
"page": 0,
15+
"processingTimeMS": 42,
16+
"query": "a query",
17+
}
18+
}
19+
templateKey="body"
20+
/>
21+
`;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`autoHideContainer should render autoHideContainer(<TestComponent />) 1`] = `
4+
<div
5+
style={
6+
Object {
7+
"display": "none",
8+
}
9+
}
10+
>
11+
<TestComponent
12+
hello="son"
13+
shouldAutoHideContainer={true}
14+
/>
15+
</div>
16+
`;

src/decorators/__tests__/autoHideContainer-test.js

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
import PropTypes from 'prop-types';
22
import React from 'react';
33
import ReactDOM from 'react-dom';
4-
import expect from 'expect';
5-
import { createRenderer } from 'react-test-renderer/shallow';
4+
import { shallow } from 'enzyme';
65
import autoHideContainer from '../autoHideContainer';
7-
import expectJSX from 'expect-jsx';
8-
expect.extend(expectJSX);
9-
import sinon from 'sinon';
106

117
class TestComponent extends React.Component {
128
render() {
@@ -22,16 +18,10 @@ describe('autoHideContainer', () => {
2218
let props = {};
2319

2420
it('should render autoHideContainer(<TestComponent />)', () => {
25-
const renderer = createRenderer();
2621
props.hello = 'son';
2722
const AutoHide = autoHideContainer(TestComponent);
28-
renderer.render(<AutoHide shouldAutoHideContainer {...props} />);
29-
const out = renderer.getRenderOutput();
30-
expect(out).toEqualJSX(
31-
<div style={{ display: 'none' }}>
32-
<TestComponent hello="son" shouldAutoHideContainer />
33-
</div>
34-
);
23+
const out = shallow(<AutoHide shouldAutoHideContainer {...props} />);
24+
expect(out).toMatchSnapshot();
3525
});
3626

3727
describe('props.shouldAutoHideContainer', () => {
@@ -48,16 +38,16 @@ describe('autoHideContainer', () => {
4838
});
4939

5040
it('creates a component', () => {
51-
expect(component).toExist();
41+
expect(component).toBeDefined();
5242
});
5343

5444
it('shows the container at first', () => {
55-
expect(container.style.display).toNotEqual('none');
45+
expect(container.style.display).not.toEqual('none');
5646
});
5747

5848
describe('when set to true', () => {
5949
beforeEach(() => {
60-
sinon.spy(component, 'render');
50+
jest.spyOn(component, 'render');
6151
props.shouldAutoHideContainer = true;
6252
ReactDOM.render(<AutoHide {...props} />, container);
6353
innerContainer = container.firstElementChild;
@@ -68,7 +58,7 @@ describe('autoHideContainer', () => {
6858
});
6959

7060
it('call component.render()', () => {
71-
expect(component.render.called).toBe(true);
61+
expect(component.render).toHaveBeenCalled();
7262
});
7363

7464
describe('when set back to false', () => {
@@ -78,11 +68,11 @@ describe('autoHideContainer', () => {
7868
});
7969

8070
it('shows the container', () => {
81-
expect(innerContainer.style.display).toNotEqual('none');
71+
expect(innerContainer.style.display).not.toEqual('none');
8272
});
8373

8474
it('calls component.render()', () => {
85-
expect(component.render.calledTwice).toBe(true);
75+
expect(component.render).toHaveBeenCalledTimes(2);
8676
});
8777
});
8878
});

0 commit comments

Comments
 (0)