0001-planitech-add-some-parameters-to-createreservation-e.patch
functests/planitech/test_planitech.py | ||
---|---|---|
47 | 47 |
data = res['data'] |
48 | 48 |
assert data |
49 | 49 | |
50 |
activities = call_generic(conn, 'getactivities') |
|
51 |
activity_id = activities[random.randint(0, len(activities) - 1)]['identifier'] |
|
52 | ||
53 |
resa_types = call_generic(conn, 'getreservationtypes') |
|
54 |
resa_type_id = resa_types[random.randint(0, len(resa_types) - 1)]['identifier'] |
|
55 | ||
50 | 56 |
chosen_date = data[0]['id'] |
51 | 57 |
# create reservation |
52 | 58 |
params = { |
53 | 59 |
'date': chosen_date, 'start_time': '10:00', 'end_time': '11:00', |
54 |
'place_id': place, 'price': 200, 'name_id': 'john-doe', |
|
55 |
'first_name': 'jon', 'last_name': 'doe', |
|
56 |
'email': 'jon.doe@localhost' |
|
60 |
'place_id': place, 'price': 200, 'name_id': 'john-doe', 'type_id': resa_type_id,
|
|
61 |
'first_name': 'jon', 'last_name': 'doe', 'activity_id': activity_id,
|
|
62 |
'email': 'jon.doe@localhost', 'object': 'reservation object', 'vat_rate': 200
|
|
57 | 63 |
} |
58 | 64 |
print('Create reservation parameters \n') |
59 | 65 |
pprint.pprint(params) |
... | ... | |
107 | 113 |
print('%s \n' % endpoint) |
108 | 114 |
pprint.pprint(data) |
109 | 115 |
print('\n') |
116 |
return data |
|
110 | 117 | |
111 | 118 | |
112 | 119 |
def test_getusers(conn): |
passerelle/contrib/planitech/models.py | ||
---|---|---|
85 | 85 |
"description": "Email", |
86 | 86 |
"type": "string", |
87 | 87 |
"required": True |
88 |
}, |
|
89 |
"activity_id": { |
|
90 |
"description": "Activity identifier", |
|
91 |
"type": "number", |
|
92 |
"required": True |
|
93 |
}, |
|
94 |
"object": { |
|
95 |
"description": "Object", |
|
96 |
"type": "string", |
|
97 |
"required": True |
|
98 |
}, |
|
99 |
"type_id": { |
|
100 |
"description": "Rerservation type identifier", |
|
101 |
"type": "number", |
|
102 |
"required": True |
|
103 |
}, |
|
104 |
"vat_rate": { |
|
105 |
"description": "VAT rate", |
|
106 |
"type": "number", |
|
107 |
"required": True |
|
88 | 108 |
} |
89 | 109 |
} |
90 | 110 |
} |
... | ... | |
315 | 335 |
raise APIError("Person creation failed: %s" % data.get('creationStatus')) |
316 | 336 | |
317 | 337 |
params = { |
318 |
"activityID": mste.Uint32(6), # relaxation FIXME
|
|
338 |
"activityID": mste.Uint32(post_data['activity_id']),
|
|
319 | 339 |
"contractorExternalIdentifier": pairing.external_id, |
320 | 340 |
"end": end_datetime, |
321 | 341 |
"isWeekly": False, |
322 |
"object": "reservation test entouvert", # FIXME
|
|
342 |
"object": post_data['object'],
|
|
323 | 343 |
"places": [float(post_data['place_id'])], |
324 | 344 |
"price": mste.Uint32(post_data['price']), |
325 | 345 |
"requestDate": request_date, |
326 | 346 |
"start": start_datetime, |
327 |
"typeID": mste.Uint32(2), # payant FIXME
|
|
328 |
"vatRate": mste.Uint32(4000) # FIXME
|
|
347 |
"typeID": mste.Uint32(post_data['type_id']),
|
|
348 |
"vatRate": mste.Uint32(post_data['vat_rate'])
|
|
329 | 349 |
} |
330 | 350 |
data = self._call_planitech(self.requests.post, 'createReservation', params) |
331 | 351 |
if data.get('creationStatus') != 'OK': |
... | ... | |
541 | 561 |
def getplacesreferential(self, request): |
542 | 562 |
return {'data': self._get_places_referential()} |
543 | 563 | |
544 |
@endpoint(description_get=_('Get activity types'), methods=['get'], perm='can_access')
|
|
564 |
@endpoint(description_get=_('Get reservation types'), methods=['get'], perm='can_access')
|
|
545 | 565 |
def getreservationtypes(self, request): |
546 | 566 |
return {'data': self.generic_call('getReservationTypes', 'types')} |
547 | 567 |
tests/test_planitech.py | ||
---|---|---|
156 | 156 |
} |
157 | 157 |
] |
158 | 158 |
mock_call_planitech = mock_planitech(monkeypatch, side_effect=side_effect) |
159 |
response = app.post_json( |
|
160 |
'/planitech/slug-planitech/createreservation', |
|
161 |
params={ |
|
162 |
'date': '2018-11-11', |
|
163 |
'start_time': '10:00', |
|
164 |
'end_time': '11:00', |
|
165 |
'place_id': 1, |
|
166 |
'price': 10, |
|
167 |
'name_id': 'john-doe', |
|
168 |
'first_name': 'jon', |
|
169 |
'last_name': 'doe', |
|
170 |
'email': 'jon.doe@localhost' |
|
171 |
} |
|
172 |
) |
|
159 |
params = { |
|
160 |
'date': '2018-11-11', |
|
161 |
'start_time': '10:00', |
|
162 |
'end_time': '11:00', |
|
163 |
'place_id': 1, |
|
164 |
'price': 10, |
|
165 |
'name_id': 'john-doe', |
|
166 |
'first_name': 'jon', |
|
167 |
'last_name': 'doe', |
|
168 |
'email': 'jon.doe@localhost', |
|
169 |
'activity_id': 1, |
|
170 |
'object': 'reservation object', |
|
171 |
'type_id': 1, |
|
172 |
'vat_rate': 1, |
|
173 |
} |
|
174 | ||
175 |
response = app.post_json('/planitech/slug-planitech/createreservation', params=params) |
|
173 | 176 |
json_resp = response.json |
174 | 177 |
assert json_resp['err'] == 0 |
175 | 178 |
assert json_resp['data']['reservation_id'] == 1 |
... | ... | |
181 | 184 |
assert person_args['firstName'] == 'jon' |
182 | 185 |
assert person_args['name'] == 'doe' |
183 | 186 |
external_id = person_args['externalUserIdentifier'] |
184 |
assert Pairing.objects.get(resource=connector, name_id='john-doe').external_id == external_id |
|
187 |
pairing = Pairing.objects.get(resource=connector, name_id='john-doe') |
|
188 |
assert pairing.external_id == external_id |
|
185 | 189 | |
186 | 190 |
reservation_args = mock_call_planitech.call_args_list[1][0] |
187 | 191 |
assert reservation_args[1] == 'createReservation' |
... | ... | |
190 | 194 |
assert reservation_args['end'] == datetime(2018, 11, 11, 11, 0) |
191 | 195 |
assert reservation_args['places'] == [1] |
192 | 196 |
assert reservation_args['price'] == 10 |
197 |
assert reservation_args['contractorExternalIdentifier'] == pairing.external_id |
|
198 |
assert reservation_args['activityID'] == 1 |
|
199 |
assert reservation_args['object'] == 'reservation object' |
|
200 |
assert reservation_args['typeID'] == 1 |
|
201 |
assert reservation_args['vatRate'] == 1 |
|
193 | 202 | |
194 | 203 |
# Second reservation for same user : no planitech person created |
195 | 204 |
mock_call_planitech = mock_planitech(monkeypatch, return_value=side_effect[1]) |
196 |
response = app.post_json( |
|
197 |
'/planitech/slug-planitech/createreservation', |
|
198 |
params={ |
|
199 |
'date': '2018-11-11', |
|
200 |
'start_time': '10:00', |
|
201 |
'end_time': '11:00', |
|
202 |
'place_id': 1, |
|
203 |
'price': 10, |
|
204 |
'name_id': 'john-doe', |
|
205 |
'first_name': 'jon', |
|
206 |
'last_name': 'doe', |
|
207 |
'email': 'jon.doe@localhost' |
|
208 |
} |
|
209 |
) |
|
205 |
response = app.post_json('/planitech/slug-planitech/createreservation', params=params) |
|
210 | 206 |
json_resp = response.json |
211 | 207 |
assert json_resp['err'] == 0 |
212 | 208 |
assert json_resp['data']['reservation_id'] == 1 |
... | ... | |
221 | 217 |
'creationStatus': 'NOTOK', |
222 | 218 |
'reservationIdentifier': 1 |
223 | 219 |
}) |
224 |
response = app.post_json( |
|
225 |
'/planitech/slug-planitech/createreservation', |
|
226 |
params={ |
|
227 |
'date': '2018-11-11', |
|
228 |
'start_time': '10:00', |
|
229 |
'end_time': '11:00', |
|
230 |
'place_id': 1, |
|
231 |
'price': 10, |
|
232 |
'name_id': 'john-doe', |
|
233 |
'first_name': 'jon', |
|
234 |
'last_name': 'doe', |
|
235 |
'email': 'jon.doe@localhost' |
|
236 | ||
237 |
} |
|
238 |
) |
|
220 |
response = app.post_json('/planitech/slug-planitech/createreservation', params=params) |
|
239 | 221 |
json_resp = response.json |
240 | 222 |
assert json_resp['err'] == 1 |
241 | 223 |
assert json_resp['err_desc'] == 'Reservation creation failed: NOTOK' |
... | ... | |
245 | 227 |
monkeypatch, return_value={ |
246 | 228 |
'creationStatus': 'OK' |
247 | 229 |
}) |
248 |
response = app.post_json( |
|
249 |
'/planitech/slug-planitech/createreservation', |
|
250 |
params={ |
|
251 |
'date': '2018-11-11', |
|
252 |
'start_time': '10:00', |
|
253 |
'end_time': '11:00', |
|
254 |
'place_id': 1, |
|
255 |
'price': 10, |
|
256 |
'name_id': 'john-doe', |
|
257 |
'first_name': 'jon', |
|
258 |
'last_name': 'doe', |
|
259 |
'email': 'jon.doe@localhost' |
|
260 |
} |
|
261 |
) |
|
230 |
response = app.post_json('/planitech/slug-planitech/createreservation', params=params) |
|
262 | 231 |
json_resp = response.json |
263 | 232 |
assert json_resp['err'] == 1 |
264 | 233 |
assert json_resp['err_desc'] == 'Reservation creation failed: no reservation ID' |
265 |
- |