Skip to content

Commit 0d3b35b

Browse files
committed
Upgrade to React 16 and Enzyme 3
1 parent 3ee9e68 commit 0d3b35b

6 files changed

+34
-20
lines changed

jest.config.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module.exports = {
2+
setupFiles: ['./src/JestSetup.ts'],
3+
4+
transform: {
5+
"^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
6+
},
7+
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$',
8+
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
9+
10+
mapCoverage: true
11+
};

package.json

+6-15
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,13 @@
3131
"tslint": "tslint --config tslint.json '**/*.ts{,x}' --exclude '**/node_modules/**' --exclude 'lib/**'"
3232
},
3333

34-
"jest": {
35-
"transform": {
36-
"^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
37-
},
38-
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
39-
"moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json"],
40-
41-
"mapCoverage": true
42-
},
43-
4434
"peerDependencies": {
4535
"react": ">=15",
4636
"react-dom": ">=15"
4737
},
4838

4939
"dependencies": {
50-
"prop-types": "^15.6.0",
40+
"prop-types": "latest",
5141
"@types/prop-types": "latest"
5242
},
5343

@@ -56,9 +46,9 @@
5646
"tslint": "latest",
5747
"tslint-react": "latest",
5848

59-
"react": "^15.6.2",
49+
"react": "latest",
6050
"@types/react": "latest",
61-
"react-dom": "^15.6.2",
51+
"react-dom": "latest",
6252
"@types/react-dom": "latest",
6353

6454
"ts-node": "latest",
@@ -95,8 +85,9 @@
9585
"@types/jest": "latest",
9686
"ts-jest": "latest",
9787

98-
"enzyme": "^2.9.1",
88+
"enzyme": "latest",
9989
"@types/enzyme": "latest",
100-
"react-test-renderer": "^15.6.2"
90+
"enzyme-adapter-react-16": "latest",
91+
"react-test-renderer": "latest"
10192
}
10293
}

src/DisplayFields.test.tsx

+7
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ describe('reRender()', () => {
8585

8686
form_username_empty.fieldsStore.addField('password');
8787

88+
// See http://airbnb.io/enzyme/docs/guides/migration-from-2-to-3.html#for-mount-updates-are-sometimes-required-when-they-werent-before
89+
component.update();
90+
8891
expect(component.text()).toEqual(
8992
`react-form-with-constraints = {
9093
"username": {
@@ -112,6 +115,8 @@ describe('reRender()', () => {
112115

113116
form_username_empty.fieldsStore.removeField('username');
114117

118+
component.update();
119+
115120
expect(component.text()).toEqual('react-form-with-constraints = {}');
116121
});
117122

@@ -129,6 +134,8 @@ describe('reRender()', () => {
129134
field.validationMessage = "I'm a clone";
130135
form_username_empty.fieldsStore.updateField('username', field);
131136

137+
component.update();
138+
132139
expect(component.text()).toEqual(
133140
`react-form-with-constraints = {
134141
"username": {

src/Enzyme.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ export function getFieldFeedbacksMessages(inputs: ShallowWrapper<React.InputHTML
4040
inputs.forEach(input => {
4141
const { name, value } = input.props();
4242

43-
const fieldFeedbackList = findFieldFeedbackList(input.parent(), name!);
43+
// FIXME parent() not listing children with Enzyme 3, see https://github.com/airbnb/enzyme/issues/1235#issuecomment-335053965
44+
const fieldFeedbackList = findFieldFeedbackList(input.parents(), name!);
4445
fieldFeedbackList.forEach(fieldFeedback => {
4546
const { when, children } = fieldFeedback.props();
4647

src/FieldFeedbacks.test.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ describe('render()', () => {
230230
username: fieldWithoutFeedback
231231
});
232232
expect(component.html()).toEqual(
233-
'<div><!-- react-empty: 2 --></div>'
233+
'<div></div>'
234234
);
235235
});
236236

@@ -287,7 +287,7 @@ describe('render()', () => {
287287
});
288288

289289
expect(component.html()).toEqual(
290-
'<div><div class="error">Suffering from being missing</div><!-- react-empty: 3 --><!-- react-empty: 4 --></div>'
290+
'<div><div class="error">Suffering from being missing</div></div>'
291291
);
292292
});
293293

@@ -315,7 +315,7 @@ describe('render()', () => {
315315
});
316316

317317
expect(component.html()).toEqual(
318-
'<div><div class="error">Suffering from being missing</div><!-- react-empty: 3 --><div class="info">Suffering from being missing</div></div>'
318+
'<div><div class="error">Suffering from being missing</div><div class="info">Suffering from being missing</div></div>'
319319
);
320320
});
321321
});
@@ -348,7 +348,7 @@ describe('reRender()', () => {
348348

349349
form.fieldsStore.updateField('username', fieldWithoutFeedback);
350350
expect(component.html()).toEqual(
351-
'<div><!-- react-empty: 4 --></div>'
351+
'<div></div>'
352352
);
353353
});
354354

src/JestSetup.ts

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { configure } from 'enzyme';
2+
import * as Adapter from 'enzyme-adapter-react-16';
3+
4+
configure({adapter: new Adapter()});

0 commit comments

Comments
 (0)