Skip to content

Commit d4f377d

Browse files
committed
Refactor Area tests
1 parent 994beaa commit d4f377d

File tree

3 files changed

+32
-87
lines changed

3 files changed

+32
-87
lines changed

app/components/Area/Area.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Area extends React.Component
2727
areas: this.generate(response.data.visits)
2828
});
2929
}).catch((error) => {
30-
if (error.response) {
30+
if (typeof error.response.data.error !== 'undefined') {
3131
this.setState({error: error.response.data.error});
3232
}
3333
});

app/services/Visit.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const Visit = {
66
getGroupByArea() {
77
let config = {
88
headers: {
9-
Authorization : localStorage.token
9+
Authorization : window.localStorage.getItem('token')
1010
}
1111
};
1212
return axios.get(`${HOST}/api/v1/visit/group/area`, config);

tests/Area.test.js

Lines changed: 30 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -3,132 +3,79 @@ jest.dontMock('components/Area/Area');
33
jest.dontMock('components/Error/Error');
44
jest.dontMock('react');
55
jest.dontMock('axios');
6+
jest.dontMock('axios-mock-adapter');
7+
jest.dontMock('services/Visit');
68
jest.dontMock('../tests/__mocks__/AreasResponseMock');
79
jest.dontMock('enzyme');
810

911

1012
describe('Test Area', () => {
13+
require('../tests/__mocks__/LocalStorageMock');
14+
1115
const React = require('react');
1216
const Enzyme = require('enzyme');
1317
const shallow = Enzyme.shallow;
18+
let axios = require('axios');
19+
let MockAdapter = require('axios-mock-adapter');
1420
let Visit = require('services/Visit').default;
1521

1622
it('Area should show error message', (done) => {
1723

18-
let error = {response:{data:{error:"Not Found"}}};
19-
let promises = [];
24+
let response = {error:"Not Found"};
2025
let Area;
2126
let component;
27+
let mockAdapter = new MockAdapter(axios);
2228

23-
promises.push(
24-
(() => {
25-
Visit.getGroupByArea = jest.genMockFunction().mockImplementation(() => {
26-
return new Promise((resolve, reject) => {
27-
throw error;
28-
});
29-
})
30-
})()
31-
);
29+
mockAdapter.onGet('http://localhost:3000/api/v1/visit/group/area').reply(404, response);
3230

33-
promises.push(
34-
(() => {
35-
Area = require('components/Area/Area').default;
36-
})()
37-
);
31+
Area = require('components/Area/Area').default;
3832

39-
promises.push(
40-
(() => {
41-
component = shallow(
42-
<Area />
43-
);
44-
})()
33+
component = shallow(
34+
<Area />
4535
);
4636

47-
Promise.all(promises).then(() => {
48-
expect(component.state('error')).toEqual('Not Found');
49-
50-
let errorComponent = shallow(
51-
component.instance().generateError(error.response.data.error)
52-
);
53-
54-
expect(errorComponent.find('div').text()).toEqual('Not Found');
37+
setTimeout(() => {
38+
expect(component.render().text()).toEqual('Not Found');
5539
done();
56-
}).catch((error) => {
57-
console.log(error);
58-
});
40+
}, 0);
5941
});
6042

6143
it('Area should show nothing if no data', (done) => {
6244

63-
let error = {data:{error:"Not Found"}};
64-
let promises = [];
6545
let Area;
6646
let component;
47+
let mockAdapter = new MockAdapter(axios);
6748

68-
promises.push(
69-
(() => {
70-
Visit.getGroupByArea = jest.genMockFunction().mockImplementation(() => {
71-
return new Promise((resolve, reject) => {
72-
throw error;
73-
});
74-
})
75-
})()
76-
);
49+
mockAdapter.onGet('http://localhost:3000/api/v1/visit/group/area').reply(404, {});
7750

78-
promises.push(
79-
(() => {
80-
Area = require('components/Area/Area').default;
81-
})()
82-
);
51+
Area = require('components/Area/Area').default;
8352

84-
promises.push(
85-
(() => {
86-
component = shallow(
87-
<Area />
88-
);
89-
})()
53+
component = shallow(
54+
<Area />
9055
);
9156

92-
Promise.all(promises).then(() => {
57+
setTimeout(() => {
9358
expect(component.state('error')).toEqual('');
9459
done();
95-
}).catch((error) => {
96-
console.log(error);
97-
});
60+
}, 0);
9861
});
9962

10063
it('Area should show mocked data', (done) => {
10164

102-
let response = {data:require('AreasResponseMock').default};
103-
let promises = [];
65+
let response = require('AreasResponseMock').default;
10466
let Area;
10567
let component;
68+
let mockAdapter = new MockAdapter(axios);
10669

107-
promises.push(
108-
(() => {
109-
Visit.getGroupByArea = jest.genMockFunction().mockImplementation(() => {
110-
return new Promise((resolve, reject) => {
111-
resolve(response);
112-
});
113-
})
114-
})()
115-
);
70+
mockAdapter.onGet('http://localhost:3000/api/v1/visit/group/area').reply(200, response);
11671

117-
promises.push(
118-
(() => {
119-
Area = require('components/Area/Area').default;
120-
})()
121-
);
72+
Area = require('components/Area/Area').default;
12273

123-
promises.push(
124-
(() => {
125-
component = shallow(
126-
<Area />
127-
);
128-
})()
74+
component = shallow(
75+
<Area />
12976
);
13077

131-
Promise.all(promises).then(() => {
78+
setTimeout(() => {
13279
expect(
13380
shallow(
13481
component.state().areas[0]
@@ -140,9 +87,7 @@ describe('Test Area', () => {
14087
).find('.title').at(0).text()
14188
).toEqual('South');
14289
done();
143-
}).catch((error) => {
144-
console.log(error);
145-
});
90+
}, 0);
14691
});
14792

14893
});

0 commit comments

Comments
 (0)