Skip to content

Commit 21168bc

Browse files
committed
Create test to create visit
1 parent 6b4f3fa commit 21168bc

File tree

3 files changed

+294
-7
lines changed

3 files changed

+294
-7
lines changed

app/components/Visit/Create/Visit.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class Visit extends React.Component
1414
this.state = {
1515
error : '',
1616
client : null,
17+
visit_date: new Date(),
1718
visit : {}
1819
};
1920
}
@@ -23,7 +24,8 @@ class Visit extends React.Component
2324
this.setState({client: response.data.client.shift()});
2425
}).catch((error) => {
2526
this.setState({error: 'Error Found: Trying get client'});
26-
if (typeof error.response.data.error !== 'undefined') {
27+
let validResponse = typeof error.response.data !== 'undefined';
28+
if (validResponse && typeof error.response.data.error !== 'undefined') {
2729
this.setState({error: error.response.data.error});
2830
}
2931
});
@@ -34,7 +36,7 @@ class Visit extends React.Component
3436

3537
let visit = {
3638
client : this.state.client,
37-
visit_date: new Date(),
39+
visit_date: this.state.visit_date,
3840
};
3941

4042
for (let i in this.refs) {
@@ -102,7 +104,7 @@ class Visit extends React.Component
102104
required="required"
103105
/>
104106
</p>
105-
<button className="button is-primary" >Cadastrar</button>
107+
<button className="button is-primary" >Save</button>
106108
</div>
107109
</div>
108110
<div className="card-image">

tests/Create.Client.test.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ describe('Test Create Client', () => {
303303
}, 0);
304304
});
305305

306-
it('Client should show default error message', () => {
306+
it('Client should show default error message', (done) => {
307307

308308
let response = {};
309309
let Client;
@@ -321,9 +321,13 @@ describe('Test Create Client', () => {
321321

322322
setTimeout(() => {
323323

324-
component.update();
325-
expect(component.render().text()).toEqual('Error Found: Trying get area');
326-
done();
324+
try {
325+
component.update();
326+
expect(component.render().text()).toEqual('Error Found: Trying get areas');
327+
done();
328+
} catch(e) {
329+
console.log(e);
330+
}
327331
}, 0);
328332
});
329333

tests/Create.Visit.test.js

Lines changed: 281 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,281 @@
1+
jest.enableAutomock();
2+
jest.dontMock('components/Visit/Create/Visit');
3+
jest.dontMock('components/Error/Error');
4+
jest.dontMock('react');
5+
jest.dontMock('axios');
6+
jest.dontMock('axios-mock-adapter');
7+
jest.dontMock('enzyme');
8+
jest.dontMock('services/Visit');
9+
jest.dontMock('services/Client');
10+
11+
describe('Test Create Visit', () => {
12+
require('../tests/__mocks__/LocalStorageMock');
13+
14+
const React = require('react');
15+
const Enzyme = require('enzyme');
16+
const shallow = Enzyme.shallow;
17+
const mount = Enzyme.mount;
18+
const context = {
19+
router: {
20+
push: (arg) => arg
21+
}
22+
};
23+
24+
let axios = require('axios');
25+
let MockAdapter = require('axios-mock-adapter');
26+
let response;
27+
28+
beforeEach(() => {
29+
response = {
30+
client : [
31+
{
32+
_id : '1',
33+
updatedAt : '2016-12-01T12:26:00.903Z',
34+
createdAt : '2016-12-01T12:26:00.903Z',
35+
name : 'Test',
36+
address : 'fdajla',
37+
city : 'fdajlkj',
38+
area : {
39+
_id : 'Center',
40+
parent : '',
41+
__v : 0,
42+
ancestors :[]
43+
},
44+
frequency : 11,
45+
ability : 201,
46+
__v :0
47+
}
48+
]
49+
};
50+
});
51+
52+
it('Visit should show error when fails to create visit', (done) => {
53+
54+
let expectedClient = response.client[0];
55+
let Visit = require('components/Visit/Create/Visit').default;
56+
let mockAdapter = new MockAdapter(axios);
57+
let context = {
58+
router: {
59+
push: (arg) => {
60+
expect(arg).toEqual('/area');
61+
}
62+
}
63+
};
64+
let component = mount(
65+
<Visit params={ {clientId : 1} }/>,
66+
{ context }
67+
);
68+
let expected = {
69+
client : expectedClient,
70+
visit_date : component.state().visit_date,
71+
value_received : '10',
72+
sales_quantity : '10',
73+
}
74+
75+
mockAdapter
76+
.onGet(HOST + '/api/v1/client/1').reply(200, response)
77+
.onPost(HOST + '/api/v1/visit').reply(503, { error : 'Error on server'});
78+
79+
setTimeout(() => {
80+
81+
let inputs = {
82+
value_received : component.find('input').at(0),
83+
quantity : component.find('input').at(1),
84+
}
85+
86+
for (let input in inputs) {
87+
inputs[input].node.value = 10;
88+
inputs[input].simulate('change', inputs[input]);
89+
}
90+
component.find('form').simulate('submit', { target: component.find('form').get(0) });
91+
92+
}, 5);
93+
94+
setTimeout(() => {
95+
96+
try {
97+
expect(component.render().text()).toEqual('Error on server');
98+
done();
99+
} catch (e) {
100+
console.log(e);
101+
}
102+
}, 10);
103+
});
104+
105+
it('Should show error when fails to create visit', (done) => {
106+
107+
let expectedClient = response.client[0];
108+
let Visit = require('components/Visit/Create/Visit').default;
109+
let mockAdapter = new MockAdapter(axios);
110+
let context = {
111+
router: {
112+
push: (arg) => {
113+
expect(arg).toEqual('/area');
114+
}
115+
}
116+
};
117+
let component = mount(
118+
<Visit params={ {clientId : 1} }/>,
119+
{ context }
120+
);
121+
let expected = {
122+
client : expectedClient,
123+
visit_date : component.state().visit_date,
124+
value_received : '10',
125+
sales_quantity : '10',
126+
}
127+
128+
mockAdapter
129+
.onGet(HOST + '/api/v1/client/1').reply(200, response)
130+
.onPost(HOST + '/api/v1/visit').reply(503);
131+
132+
setTimeout(() => {
133+
134+
let inputs = {
135+
value_received : component.find('input').at(0),
136+
quantity : component.find('input').at(1),
137+
}
138+
139+
for (let input in inputs) {
140+
inputs[input].node.value = 10;
141+
inputs[input].simulate('change', inputs[input]);
142+
}
143+
component.find('form').simulate('submit', { target: component.find('form').get(0) });
144+
145+
}, 5);
146+
147+
setTimeout(() => {
148+
149+
try {
150+
expect(component.render().text()).toEqual('Error trying create visit');
151+
done();
152+
} catch (e) {
153+
console.log(e);
154+
}
155+
}, 10);
156+
});
157+
158+
it('Should return data on submit', (done) => {
159+
160+
let expectedClient = response.client[0];
161+
let Visit = require('components/Visit/Create/Visit').default;
162+
let mockAdapter = new MockAdapter(axios);
163+
let context = {
164+
router: {
165+
push: (arg) => {
166+
expect(arg).toEqual('/area');
167+
}
168+
}
169+
};
170+
let component = mount(
171+
<Visit params={ {clientId : 1} }/>,
172+
{ context }
173+
);
174+
let expected = {
175+
client : expectedClient,
176+
visit_date : component.state().visit_date,
177+
value_received : '10',
178+
sales_quantity : '10',
179+
}
180+
181+
mockAdapter
182+
.onGet(HOST + '/api/v1/client/1').reply(200, response)
183+
.onPost(HOST + '/api/v1/visit').reply(201);
184+
185+
setTimeout(() => {
186+
187+
try {
188+
189+
let inputs = {
190+
value_received : component.find('input').at(0),
191+
quantity : component.find('input').at(1),
192+
}
193+
194+
for (let input in inputs) {
195+
inputs[input].node.value = 10;
196+
inputs[input].simulate('change', inputs[input]);
197+
}
198+
component.find('form').simulate('submit', { target: component.find('form').get(0) });
199+
200+
expect(component.state().client).toEqual(expectedClient);
201+
expect(component.state().visit).toEqual(expected);
202+
expect(component.state().error).toEqual('');
203+
done();
204+
} catch (e) {
205+
console.log(e);
206+
}
207+
}, 25);
208+
});
209+
210+
it('Should show mocked data', (done) => {
211+
212+
let mockAdapter = new MockAdapter(axios);
213+
let Visit = require('components/Visit/Create/Visit').default;
214+
let component = shallow(
215+
<Visit params={ {clientId : 1} }/>,
216+
{ context }
217+
);
218+
219+
mockAdapter.onGet(HOST + '/api/v1/client/1').reply(200, response);
220+
221+
setTimeout(() => {
222+
223+
try {
224+
expect(component.find('.content p').at(0).text()).toEqual('Name: Test');
225+
expect(component.find('.content p').at(1).text()).toEqual('Address: fdajla');
226+
expect(component.find('.content p').at(2).text()).toEqual('City: fdajlkj');
227+
expect(component.find('.button').text()).toEqual('Save');
228+
done();
229+
} catch(e) {
230+
console.log(e);
231+
}
232+
}, 0);
233+
});
234+
235+
it('Should show error message', (done) => {
236+
237+
let response = { error:'Client 1 Not Found' };
238+
let Visit = require('components/Visit/Create/Visit').default;
239+
let mockAdapter = new MockAdapter(axios);
240+
let component = shallow(
241+
<Visit params={ {clientId : 1} }/>,
242+
{ context }
243+
);
244+
245+
mockAdapter.onGet(HOST + '/api/v1/client/1').reply(404, response);
246+
247+
setTimeout(() => {
248+
249+
try {
250+
component.update();
251+
expect(component.render().text()).toEqual('Client 1 Not Found');
252+
done();
253+
} catch(e) {
254+
console.log(e);
255+
}
256+
}, 0);
257+
});
258+
259+
it('Should show default error message', (done) => {
260+
261+
let mockAdapter = new MockAdapter(axios);
262+
let Visit = require('components/Visit/Create/Visit').default;
263+
let component = shallow(
264+
<Visit params={ {clientId : 1} }/>,
265+
{ context }
266+
);
267+
268+
mockAdapter.onGet(HOST + '/api/v1/client/1').reply(503);
269+
270+
setTimeout(() => {
271+
272+
try {
273+
expect(component.render().text()).toEqual('Error Found: Trying get client');
274+
done();
275+
} catch(e) {
276+
console.log(e);
277+
}
278+
}, 0);
279+
});
280+
});
281+

0 commit comments

Comments
 (0)