Skip to content
This repository was archived by the owner on Jul 19, 2019. It is now read-only.

Commit 0166c0f

Browse files
authored
Merge pull request #128 from CMTegner/jest
Replace mocha/chai/isparta with jest
2 parents aaa4f8c + 672c875 commit 0166c0f

File tree

3 files changed

+57
-64
lines changed

3 files changed

+57
-64
lines changed

lib/__tests__/.setup.js

Lines changed: 0 additions & 6 deletions
This file was deleted.

lib/__tests__/Autocomplete-test.js

Lines changed: 43 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
1+
jest.unmock('../Autocomplete')
2+
jest.unmock('../utils')
3+
14
import React from 'react'
2-
import ReactDOM from 'react-dom'
3-
import TestUtils from 'react-addons-test-utils'
4-
import jsdom from 'mocha-jsdom';
5-
import chai from 'chai';
6-
const expect = chai.expect;
7-
import chaiEnzyme from 'chai-enzyme'
8-
import { ok, equal } from 'assert';
9-
import { mount, shallow } from 'enzyme';
5+
import { mount } from 'enzyme';
106
import Autocomplete from '../Autocomplete';
117
import { getStates, matchStateToTerm, sortStates, styles } from '../utils'
128

13-
chai.use(chaiEnzyme());
14-
159
function AutocompleteComponentJSX (extraProps) {
1610
return (
1711
<Autocomplete
@@ -38,31 +32,31 @@ describe('Autocomplete acceptance tests', () => {
3832

3933
it('should display autocomplete menu when input has focus', () => {
4034

41-
expect(autocompleteWrapper.state('isOpen')).to.be.false;
42-
expect(autocompleteWrapper.instance().refs.menu).to.not.exist;
35+
expect(autocompleteWrapper.state('isOpen')).toBe(false);
36+
expect(autocompleteWrapper.instance().refs.menu).toBe(undefined);
4337

4438
// Display autocomplete menu upon input focus
4539
autocompleteInputWrapper.simulate('focus');
4640

47-
expect(autocompleteWrapper.state('isOpen')).to.be.true;
48-
expect(autocompleteWrapper.instance().refs.menu).to.exist;
41+
expect(autocompleteWrapper.state('isOpen')).toBe(true);
42+
expect(autocompleteWrapper.instance().refs.menu).not.toBe(undefined);
4943
});
5044

5145
it('should show results when value is a partial match', () => {
5246

5347
// Render autocomplete results upon partial input match
54-
expect(autocompleteWrapper.ref('menu').children()).to.have.length(50);
48+
expect(autocompleteWrapper.ref('menu').children().length).toBe(50);
5549
autocompleteWrapper.setProps({ value: 'Ar' });
56-
expect(autocompleteWrapper.ref('menu').children()).to.have.length(6);
50+
expect(autocompleteWrapper.ref('menu').children().length).toBe(6);
5751

5852
});
5953

6054
it('should close autocomplete menu when input is blurred', () => {
6155

6256
autocompleteInputWrapper.simulate('blur');
6357

64-
expect(autocompleteWrapper.state('isOpen')).to.be.false;
65-
expect(autocompleteWrapper.instance().refs.menu).to.not.exist;
58+
expect(autocompleteWrapper.state('isOpen')).toBe(false);
59+
expect(autocompleteWrapper.instance().refs.menu).toBe(undefined);
6660

6761
});
6862

@@ -84,8 +78,8 @@ describe('Autocomplete keyPress-><character> event handlers', () => {
8478
autocompleteInputWrapper.simulate('keyPress', { key : 'a', keyCode: 97, which: 97 });
8579
autocompleteInputWrapper.simulate('change');
8680

87-
expect(autocompleteInputWrapper.get(0).value).to.equal('');
88-
expect(value).to.equal('a');
81+
expect(autocompleteInputWrapper.get(0).value).toEqual('');
82+
expect(value).toEqual('a');
8983
done();
9084
});
9185

@@ -102,8 +96,8 @@ describe('Autocomplete kewDown->ArrowDown event handlers', () => {
10296

10397
autocompleteInputWrapper.simulate('keyDown', { key : "ArrowDown", keyCode: 40, which: 40 });
10498

105-
expect(autocompleteWrapper.state('isOpen')).to.be.true;
106-
expect(autocompleteWrapper.state('highlightedIndex')).to.equal(0);
99+
expect(autocompleteWrapper.state('isOpen')).toBe(true);
100+
expect(autocompleteWrapper.state('highlightedIndex')).toEqual(0);
107101
});
108102

109103
it('should highlight the "n+1" item in the menu when "n" is selected', () => {
@@ -116,8 +110,8 @@ describe('Autocomplete kewDown->ArrowDown event handlers', () => {
116110

117111
autocompleteInputWrapper.simulate('keyDown', { key : "ArrowDown", keyCode: 40, which: 40 });
118112

119-
expect(autocompleteWrapper.state('isOpen')).to.be.true;
120-
expect(autocompleteWrapper.state('highlightedIndex')).to.equal(n+1);
113+
expect(autocompleteWrapper.state('isOpen')).toBe(true);
114+
expect(autocompleteWrapper.state('highlightedIndex')).toEqual(n+1);
121115
});
122116

123117
it('should highlight the 1st item in the menu when the last is selected', () => {
@@ -129,8 +123,8 @@ describe('Autocomplete kewDown->ArrowDown event handlers', () => {
129123

130124
autocompleteInputWrapper.simulate('keyDown', { key : "ArrowDown", keyCode: 40, which: 40 });
131125

132-
expect(autocompleteWrapper.state('isOpen')).to.be.true;
133-
expect(autocompleteWrapper.state('highlightedIndex')).to.equal(0);
126+
expect(autocompleteWrapper.state('isOpen')).toBe(true);
127+
expect(autocompleteWrapper.state('highlightedIndex')).toEqual(0);
134128
});
135129

136130
});
@@ -148,8 +142,8 @@ describe('Autocomplete kewDown->ArrowUp event handlers', () => {
148142

149143
autocompleteInputWrapper.simulate('keyDown', { key : 'ArrowUp', keyCode: 38, which: 38 });
150144

151-
expect(autocompleteWrapper.state('isOpen')).to.be.true;
152-
expect(autocompleteWrapper.state('highlightedIndex')).to.equal(49);
145+
expect(autocompleteWrapper.state('isOpen')).toBe(true);
146+
expect(autocompleteWrapper.state('highlightedIndex')).toEqual(49);
153147
});
154148

155149
it('should highlight the "n-1" item in the menu when "n" is selected', () => {
@@ -162,8 +156,8 @@ describe('Autocomplete kewDown->ArrowUp event handlers', () => {
162156

163157
autocompleteInputWrapper.simulate('keyDown', { key : 'ArrowUp', keyCode: 38, which: 38 });
164158

165-
expect(autocompleteWrapper.state('isOpen')).to.be.true;
166-
expect(autocompleteWrapper.state('highlightedIndex')).to.equal(n-1);
159+
expect(autocompleteWrapper.state('isOpen')).toBe(true);
160+
expect(autocompleteWrapper.state('highlightedIndex')).toEqual(n-1);
167161
});
168162

169163
it('should highlight the last item in the menu when the 1st is selected', () => {
@@ -175,8 +169,8 @@ describe('Autocomplete kewDown->ArrowUp event handlers', () => {
175169

176170
autocompleteInputWrapper.simulate('keyDown', { key : 'ArrowUp', keyCode: 38, which: 38 });
177171

178-
expect(autocompleteWrapper.state('isOpen')).to.be.true;
179-
expect(autocompleteWrapper.state('highlightedIndex')).to.equal(49);
172+
expect(autocompleteWrapper.state('isOpen')).toBe(true);
173+
expect(autocompleteWrapper.state('highlightedIndex')).toEqual(49);
180174
});
181175

182176
});
@@ -189,7 +183,7 @@ describe('Autocomplete kewDown->Enter event handlers', () => {
189183
it('should do nothing if the menu is closed', () => {
190184
autocompleteWrapper.setState({'isOpen': false});
191185
autocompleteWrapper.simulate('keyDown', { key : 'Enter', keyCode: 13, which: 13 });
192-
expect(autocompleteWrapper.state('isOpen')).to.be.false;
186+
expect(autocompleteWrapper.state('isOpen')).toBe(false);
193187
});
194188

195189
it('should close menu if input has focus but no item has been selected and then the Enter key is hit', () => {
@@ -200,12 +194,12 @@ describe('Autocomplete kewDown->Enter event handlers', () => {
200194

201195
// simulate keyUp of backspace, triggering autocomplete suggestion on an empty string, which should result in nothing highlighted
202196
autocompleteInputWrapper.simulate('keyUp', { key : 'Backspace', keyCode: 8, which: 8 });
203-
expect(autocompleteWrapper.state('highlightedIndex')).to.be.null;
197+
expect(autocompleteWrapper.state('highlightedIndex')).toBe(null);
204198

205199
autocompleteInputWrapper.simulate('keyDown', { key : 'Enter', keyCode: 13, which: 13 });
206200

207-
expect(value).to.equal('');
208-
expect(autocompleteWrapper.state('isOpen')).to.be.false;
201+
expect(value).toEqual('');
202+
expect(autocompleteWrapper.state('isOpen')).toBe(false);
209203

210204
});
211205

@@ -221,9 +215,9 @@ describe('Autocomplete kewDown->Enter event handlers', () => {
221215

222216
// Hit enter, updating state.value with the selected Autocomplete suggestion
223217
autocompleteInputWrapper.simulate('keyDown', { key : 'Enter', keyCode: 13, which: 13, preventDefault() { defaultPrevented = true; } });
224-
expect(value).to.equal('Arizona');
225-
expect(autocompleteWrapper.state('isOpen')).to.be.false;
226-
expect(defaultPrevented).to.be.true;
218+
expect(value).toEqual('Arizona');
219+
expect(autocompleteWrapper.state('isOpen')).toBe(false);
220+
expect(defaultPrevented).toBe(true);
227221

228222
});
229223

@@ -240,8 +234,8 @@ describe('Autocomplete kewDown->Escape event handlers', () => {
240234

241235
autocompleteInputWrapper.simulate('keyDown', { key : 'Escape', keyCode: 27, which: 27 });
242236

243-
expect(autocompleteWrapper.state('isOpen')).to.be.false;
244-
expect(autocompleteWrapper.state('highlightedIndex')).to.be.null;
237+
expect(autocompleteWrapper.state('isOpen')).toBe(false);
238+
expect(autocompleteWrapper.state('highlightedIndex')).toBe(null);
245239
});
246240

247241
});
@@ -265,8 +259,8 @@ describe('Autocomplete click event handlers', () => {
265259

266260
// Click inside input, updating state.value with the selected Autocomplete suggestion
267261
autocompleteInputWrapper.simulate('click');
268-
expect(value).to.equal('Arizona');
269-
expect(autocompleteWrapper.state('isOpen')).to.be.false;
262+
expect(value).toEqual('Arizona');
263+
expect(autocompleteWrapper.state('isOpen')).toBe(false);
270264
});
271265

272266
});
@@ -280,17 +274,17 @@ describe('Autocomplete#renderMenu', () => {
280274
it('should return a <div ref="menu"> ReactComponent when renderMenu() is called', () => {
281275
//autocompleteInputWrapper.simulate('change', { target: { value: 'Ar' } });
282276
var autocompleteMenu = autocompleteWrapper.instance().renderMenu();
283-
expect(autocompleteMenu.type).to.be.equal('div');
284-
expect(autocompleteMenu.ref).to.be.equal('menu');
285-
expect(autocompleteMenu.props.children.length).to.be.equal(50);
277+
expect(autocompleteMenu.type).toEqual('div');
278+
expect(autocompleteMenu.ref).toEqual('menu');
279+
expect(autocompleteMenu.props.children.length).toEqual(50);
286280
});
287281

288282
it('should return a menu ReactComponent with a subset of children when partial match text has been entered', () => {
289283
// Input 'Ar' should result in 6 items in the menu, populated from autocomplete.
290284
autocompleteWrapper.setProps({ value: 'Ar' });
291285

292286
var autocompleteMenu = autocompleteWrapper.instance().renderMenu();
293-
expect(autocompleteMenu.props.children.length).to.be.equal(6);
287+
expect(autocompleteMenu.props.children.length).toEqual(6);
294288

295289
});
296290

@@ -314,7 +308,7 @@ describe('Autocomplete#renderMenu', () => {
314308
}
315309
}));
316310
wrapper.setState({ isOpen: true, highlightedIndex: 0 });
317-
expect(wrapper.find(Menu).length).to.equal(1)
318-
expect(wrapper.find(Item).length).to.equal(50)
311+
expect(wrapper.find(Menu).length).toBe(1)
312+
expect(wrapper.find(Item).length).toBe(50)
319313
});
320314
});

package.json

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
"example": "examples"
1414
},
1515
"scripts": {
16-
"test": "BABEL_ENV=test mocha --require './lib/__tests__/.setup.js' --compilers js:babel-register './lib/__tests__/Autocomplete-test.js'",
17-
"coverage": "BABEL_ENV=test node_modules/.bin/babel-node node_modules/isparta/bin/isparta cover --report lcov node_modules/mocha/bin/_mocha -- --reporter dot --require './lib/__tests__/.setup.js' './lib/__tests__/Autocomplete-test.js'",
16+
"test": "jest",
17+
"coverage": "jest --coverage",
1818
"start": "rackt server"
1919
},
2020
"authors": [
@@ -23,17 +23,12 @@
2323
"license": "MIT",
2424
"devDependencies": {
2525
"babel-cli": "^6.5.1",
26+
"babel-jest": "^13.0.0",
2627
"babel-preset-es2015": "^6.5.0",
2728
"babel-preset-react": "^6.5.0",
2829
"babel-preset-stage-0": "^6.5.0",
29-
"babel-register": "^6.6.5",
30-
"chai": "^3.5.0",
31-
"chai-enzyme": "^0.4.0",
3230
"enzyme": "^2.0.0",
33-
"isparta": "^4.0.0",
34-
"jsdom": "^8.1.0",
35-
"mocha": "~2.4.5",
36-
"mocha-jsdom": "^1.1.0",
31+
"jest": "^13.0.0",
3732
"rackt-cli": "^0.6.1",
3833
"react": "^0.14.7",
3934
"react-addons-test-utils": "^0.14.7",
@@ -52,5 +47,15 @@
5247
"peerDependencies": {
5348
"react": "^0.14.7 || ^15.0.0-0",
5449
"react-dom": "^0.14.7 || ^15.0.0-0"
50+
},
51+
"jest": {
52+
"testPathIgnorePatterns": [
53+
"build"
54+
],
55+
"unmockedModulePathPatterns": [
56+
"node_modules/react",
57+
"node_modules/react-addons-test-utils",
58+
"node_modules/enzyme"
59+
]
5560
}
5661
}

0 commit comments

Comments
 (0)