Skip to content

Commit f47e76d

Browse files
committed
Merge pull request marmelab#58 from marmelab/speedup_jest_tests
[RFR] Speed up jest tests
2 parents c78b9d6 + 9f03183 commit f47e76d

27 files changed

+229
-265
lines changed

Makefile

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,24 @@ stop-test-server: test-server.PID
2626

2727
run-test-e2e: start-test-server test-e2e stop-test-server
2828

29-
test-unit:
30-
@./node_modules/jest-cli/bin/jest.js
29+
test-unit-init:
30+
./node_modules/babel/bin/babel/index.js app --out-dir src --stage 1 --compact false > /dev/null
31+
mv node_modules/react-medium-editor node_modules/react-medium-editor_es6
32+
./node_modules/babel/bin/babel/index.js node_modules/react-medium-editor_es6 --out-dir node_modules/react-medium-editor --stage 1 --compact false > /dev/null
33+
mv node_modules/admin-config node_modules/admin-config_es6
34+
./node_modules/babel/bin/babel/index.js node_modules/admin-config_es6 --out-dir node_modules/admin-config --stage 1 --compact false > /dev/null
35+
36+
test-unit-clean:
37+
rm -rf node_modules/react-medium-editor
38+
rm -rf node_modules/admin-config
39+
rm -rf ./src
40+
mv node_modules/react-medium-editor_es6 node_modules/react-medium-editor
41+
mv node_modules/admin-config_es6 node_modules/admin-config
42+
43+
test-unit-run:
44+
@./node_modules/jest-cli/bin/jest.js src
45+
46+
test-unit: test-unit-init test-unit-run test-unit-clean
3147

3248
test-e2e:
3349
@./node_modules/protractor/bin/protractor protractor.conf.js

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,9 @@ Launch the entire tests suite by calling:
112112
```sh
113113
make test
114114
```
115+
116+
Run only one unit test by calling, for example:
117+
118+
```
119+
./node_modules/jest-cli/bin/jest.js -c jest.json app/__tests__/autoloaderTest.js
120+
```

app/Component/Button/__tests__/MaBackButtonTest.js

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
jest.autoMockOff();
22

33
describe('MaBackButton', () => {
4-
let React, TestUtils, MaBackButton;
5-
6-
beforeEach(() => {
7-
React = require('react/addons');
8-
TestUtils = React.addons.TestUtils;
9-
MaBackButton = require('../MaBackButton');
10-
});
4+
const React = require('react/addons');
5+
const TestUtils = React.addons.TestUtils;
6+
const MaBackButton = require('../MaBackButton');
117

128
describe('With good props', () => {
139
it('Should display label and size', () => {

app/Component/Button/__tests__/MaCreateButtonTest.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,9 @@ jest.autoMockOff();
22
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
33

44
describe('MaCreateButton', () => {
5-
let React, TestUtils, MaCreateButton;
6-
7-
beforeEach(() => {
8-
React = require('react/addons');
9-
TestUtils = React.addons.TestUtils;
10-
MaCreateButton = require('../MaCreateButton');
11-
});
5+
const React = require('react/addons');
6+
const TestUtils = React.addons.TestUtils;
7+
const MaCreateButton = require('../MaCreateButton');
128

139
describe('With good props', () => {
1410
it('Should display label and size', () => {
@@ -21,7 +17,7 @@ describe('MaCreateButton', () => {
2117

2218
it('Should redirect to the create route', () => {
2319
let createButton = TestUtils.renderIntoDocument(<MaCreateButton entityName={'MyEntity'} label={'Hello'} size={'xs'} />);
24-
createButtonNode = React.findDOMNode(createButton);
20+
let createButtonNode = React.findDOMNode(createButton);
2521

2622
expect(createButtonNode.attributes['data-click-to'].value).toEqual('');
2723

app/Component/Button/__tests__/MaDeleteButtonTest.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
jest.autoMockOff();
2-
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
2+
jest.setMock('react-router', { Link : require('../__mocks__/Link') });
33

44
describe('MaDeleteButton', () => {
5-
let React, TestUtils, MaDeleteButton, entry;
5+
const React = require('react/addons');
6+
const TestUtils = React.addons.TestUtils;
7+
const MaDeleteButton = require('../MaDeleteButton');
68

7-
beforeEach(() => {
8-
React = require('react/addons');
9-
TestUtils = React.addons.TestUtils;
10-
MaDeleteButton = require('../MaDeleteButton');
9+
let entry;
1110

11+
beforeEach(() => {
1212
entry = {
1313
identifierValue: 23
1414
};
@@ -25,7 +25,7 @@ describe('MaDeleteButton', () => {
2525

2626
it('Should redirect to the create route', () => {
2727
let deleteButton = TestUtils.renderIntoDocument(<MaDeleteButton entityName={'MyEntity'} entry={entry} label={'Hello'} size={'xs'} />);
28-
deleteButtonNode = React.findDOMNode(deleteButton);
28+
let deleteButtonNode = React.findDOMNode(deleteButton);
2929

3030
expect(deleteButtonNode.attributes['data-click-to'].value).toEqual('');
3131

app/Component/Button/__tests__/MaEditButtonTest.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ jest.autoMockOff();
22
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
33

44
describe('MaEditButton', () => {
5-
let React, TestUtils, MaEditButton, entry;
5+
const React = require('react/addons');
6+
const TestUtils = React.addons.TestUtils;
7+
const MaEditButton = require('../MaEditButton');
68

7-
beforeEach(() => {
8-
React = require('react/addons');
9-
TestUtils = React.addons.TestUtils;
10-
MaEditButton = require('../MaEditButton');
9+
let entry;
1110

11+
beforeEach(() => {
1212
entry = {
1313
identifierValue: 23
1414
};

app/Component/Button/__tests__/MaListButtonTest.js

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,9 @@ jest.autoMockOff();
22
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
33

44
describe('MaListButton', () => {
5-
let React, TestUtils, MaListButton;
6-
7-
beforeEach(() => {
8-
React = require('react/addons');
9-
TestUtils = React.addons.TestUtils;
10-
MaListButton = require('../MaListButton');
11-
});
5+
const React = require('react/addons');
6+
const TestUtils = React.addons.TestUtils;
7+
const MaListButton = require('../MaListButton');
128

139
describe('With good props', () => {
1410
it('Should display label', () => {

app/Component/Button/__tests__/MaShowButtonTest.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ jest.autoMockOff();
22
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
33

44
describe('MaShowButton', () => {
5-
let React, TestUtils, MaShowButton, entry;
5+
const React = require('react/addons');
6+
const TestUtils = React.addons.TestUtils;
7+
const MaShowButton = require('../MaShowButton');
8+
9+
let entry;
610

711
beforeEach(() => {
8-
React = require('react/addons');
9-
TestUtils = React.addons.TestUtils;
10-
MaShowButton = require('../MaShowButton');
1112

1213
entry = {
1314
identifierValue: 23

app/Component/Column/__tests__/BooleanColumnTest.js

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
jest.autoMockOff();
22

33
describe('BooleanColumn', () => {
4-
let React, TestUtils, BooleanColumn;
5-
6-
beforeEach(() => {
7-
React = require('react/addons');
8-
TestUtils = React.addons.TestUtils;
9-
BooleanColumn = require('../BooleanColumn');
10-
});
4+
const React = require('react/addons');
5+
const TestUtils = React.addons.TestUtils;
6+
const BooleanColumn = require('../BooleanColumn');
117

128
it('should get a span with correct class depending of Column value', () => {
139
[true, false].forEach((booleanValue) => {

app/Component/Column/__tests__/ColumnTest.js

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
11
jest.autoMockOff();
22

33
describe('Column', () => {
4-
let React, TestUtils, Column, Field, NumberField, Entity, FieldViewConfiguration, StringFieldView, NumberFieldView;
4+
const React = require('react/addons');
5+
const TestUtils = React.addons.TestUtils;
6+
const Column = require('../Column');
7+
const Field = require('admin-config/lib/Field/Field');
8+
const NumberField = require('admin-config/lib/Field/NumberField');
9+
const Entity = require('admin-config/lib/Entity/Entity');
10+
const FieldViewConfiguration = require('../../../Field/FieldViewConfiguration');
11+
const StringFieldView = require('../../../Field/StringFieldView');
12+
const NumberFieldView = require('../../../Field/NumberFieldView');
13+
14+
FieldViewConfiguration.registerFieldView('string', StringFieldView);
15+
FieldViewConfiguration.registerFieldView('number', NumberFieldView);
516

617
function getColumn(field, entity, entry, dataStore, configuration) {
718
const col = TestUtils.renderIntoDocument(<Column field={field} entity={entity} entry={entry}
@@ -10,20 +21,6 @@ describe('Column', () => {
1021
return React.findDOMNode(col);
1122
}
1223

13-
beforeEach(() => {
14-
React = require('react/addons');
15-
TestUtils = React.addons.TestUtils;
16-
Column = require('../Column');
17-
Field = require('admin-config/lib/Field/Field');
18-
NumberField = require('admin-config/lib/Field/NumberField');
19-
Entity = require('admin-config/lib/Entity/Entity');
20-
FieldViewConfiguration = require('../../../Field/FieldViewConfiguration');
21-
StringFieldView = require('../../../Field/StringFieldView');
22-
NumberFieldView = require('../../../Field/NumberFieldView');
23-
24-
FieldViewConfiguration.registerFieldView('string', StringFieldView);
25-
FieldViewConfiguration.registerFieldView('number', NumberFieldView);
26-
});
2724

2825
it('should display a string field', () => {
2926
const field = new Field('name');

0 commit comments

Comments
 (0)