Projet

Général

Profil

0001-planitech-add-some-parameters-to-createreservation-e.patch

Emmanuel Cazenave, 11 janvier 2019 13:55

Télécharger (9,13 ko)

Voir les différences:

Subject: [PATCH] planitech: add some parameters to createreservation endpoint
 (#29659)

 functests/planitech/test_planitech.py  | 13 +++-
 passerelle/contrib/planitech/models.py | 30 +++++++--
 tests/test_planitech.py                | 85 ++++++++------------------
 3 files changed, 62 insertions(+), 66 deletions(-)
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
-