planitech: add some parameters to createreservation endpoint (#29659)

This commit is contained in:
Emmanuel Cazenave 2019-01-11 13:53:56 +01:00
parent 0de254f665
commit 324cba80fa
3 changed files with 62 additions and 66 deletions

View File

@ -47,13 +47,19 @@ def test_main(conn):
data = res['data']
assert data
activities = call_generic(conn, 'getactivities')
activity_id = activities[random.randint(0, len(activities) - 1)]['identifier']
resa_types = call_generic(conn, 'getreservationtypes')
resa_type_id = resa_types[random.randint(0, len(resa_types) - 1)]['identifier']
chosen_date = data[0]['id']
# create reservation
params = {
'date': chosen_date, 'start_time': '10:00', 'end_time': '11:00',
'place_id': place, 'price': 200, 'name_id': 'john-doe',
'first_name': 'jon', 'last_name': 'doe',
'email': 'jon.doe@localhost'
'place_id': place, 'price': 200, 'name_id': 'john-doe', 'type_id': resa_type_id,
'first_name': 'jon', 'last_name': 'doe', 'activity_id': activity_id,
'email': 'jon.doe@localhost', 'object': 'reservation object', 'vat_rate': 200
}
print('Create reservation parameters \n')
pprint.pprint(params)
@ -107,6 +113,7 @@ def call_generic(conn, endpoint):
print('%s \n' % endpoint)
pprint.pprint(data)
print('\n')
return data
def test_getusers(conn):

View File

@ -85,6 +85,26 @@ CREATE_RESERVATION_SCHEMA = {
"description": "Email",
"type": "string",
"required": True
},
"activity_id": {
"description": "Activity identifier",
"type": "number",
"required": True
},
"object": {
"description": "Object",
"type": "string",
"required": True
},
"type_id": {
"description": "Rerservation type identifier",
"type": "number",
"required": True
},
"vat_rate": {
"description": "VAT rate",
"type": "number",
"required": True
}
}
}
@ -315,17 +335,17 @@ class PlanitechConnector(BaseResource):
raise APIError("Person creation failed: %s" % data.get('creationStatus'))
params = {
"activityID": mste.Uint32(6), # relaxation FIXME
"activityID": mste.Uint32(post_data['activity_id']),
"contractorExternalIdentifier": pairing.external_id,
"end": end_datetime,
"isWeekly": False,
"object": "reservation test entouvert", # FIXME
"object": post_data['object'],
"places": [float(post_data['place_id'])],
"price": mste.Uint32(post_data['price']),
"requestDate": request_date,
"start": start_datetime,
"typeID": mste.Uint32(2), # payant FIXME
"vatRate": mste.Uint32(4000) # FIXME
"typeID": mste.Uint32(post_data['type_id']),
"vatRate": mste.Uint32(post_data['vat_rate'])
}
data = self._call_planitech(self.requests.post, 'createReservation', params)
if data.get('creationStatus') != 'OK':
@ -541,7 +561,7 @@ class PlanitechConnector(BaseResource):
def getplacesreferential(self, request):
return {'data': self._get_places_referential()}
@endpoint(description_get=_('Get activity types'), methods=['get'], perm='can_access')
@endpoint(description_get=_('Get reservation types'), methods=['get'], perm='can_access')
def getreservationtypes(self, request):
return {'data': self.generic_call('getReservationTypes', 'types')}

View File

@ -156,20 +156,23 @@ def test_create_reservation(app, connector, monkeypatch):
}
]
mock_call_planitech = mock_planitech(monkeypatch, side_effect=side_effect)
response = app.post_json(
'/planitech/slug-planitech/createreservation',
params={
'date': '2018-11-11',
'start_time': '10:00',
'end_time': '11:00',
'place_id': 1,
'price': 10,
'name_id': 'john-doe',
'first_name': 'jon',
'last_name': 'doe',
'email': 'jon.doe@localhost'
}
)
params = {
'date': '2018-11-11',
'start_time': '10:00',
'end_time': '11:00',
'place_id': 1,
'price': 10,
'name_id': 'john-doe',
'first_name': 'jon',
'last_name': 'doe',
'email': 'jon.doe@localhost',
'activity_id': 1,
'object': 'reservation object',
'type_id': 1,
'vat_rate': 1,
}
response = app.post_json('/planitech/slug-planitech/createreservation', params=params)
json_resp = response.json
assert json_resp['err'] == 0
assert json_resp['data']['reservation_id'] == 1
@ -181,7 +184,8 @@ def test_create_reservation(app, connector, monkeypatch):
assert person_args['firstName'] == 'jon'
assert person_args['name'] == 'doe'
external_id = person_args['externalUserIdentifier']
assert Pairing.objects.get(resource=connector, name_id='john-doe').external_id == external_id
pairing = Pairing.objects.get(resource=connector, name_id='john-doe')
assert pairing.external_id == external_id
reservation_args = mock_call_planitech.call_args_list[1][0]
assert reservation_args[1] == 'createReservation'
@ -190,23 +194,15 @@ def test_create_reservation(app, connector, monkeypatch):
assert reservation_args['end'] == datetime(2018, 11, 11, 11, 0)
assert reservation_args['places'] == [1]
assert reservation_args['price'] == 10
assert reservation_args['contractorExternalIdentifier'] == pairing.external_id
assert reservation_args['activityID'] == 1
assert reservation_args['object'] == 'reservation object'
assert reservation_args['typeID'] == 1
assert reservation_args['vatRate'] == 1
# Second reservation for same user : no planitech person created
mock_call_planitech = mock_planitech(monkeypatch, return_value=side_effect[1])
response = app.post_json(
'/planitech/slug-planitech/createreservation',
params={
'date': '2018-11-11',
'start_time': '10:00',
'end_time': '11:00',
'place_id': 1,
'price': 10,
'name_id': 'john-doe',
'first_name': 'jon',
'last_name': 'doe',
'email': 'jon.doe@localhost'
}
)
response = app.post_json('/planitech/slug-planitech/createreservation', params=params)
json_resp = response.json
assert json_resp['err'] == 0
assert json_resp['data']['reservation_id'] == 1
@ -221,21 +217,7 @@ def test_create_reservation(app, connector, monkeypatch):
'creationStatus': 'NOTOK',
'reservationIdentifier': 1
})
response = app.post_json(
'/planitech/slug-planitech/createreservation',
params={
'date': '2018-11-11',
'start_time': '10:00',
'end_time': '11:00',
'place_id': 1,
'price': 10,
'name_id': 'john-doe',
'first_name': 'jon',
'last_name': 'doe',
'email': 'jon.doe@localhost'
}
)
response = app.post_json('/planitech/slug-planitech/createreservation', params=params)
json_resp = response.json
assert json_resp['err'] == 1
assert json_resp['err_desc'] == 'Reservation creation failed: NOTOK'
@ -245,20 +227,7 @@ def test_create_reservation(app, connector, monkeypatch):
monkeypatch, return_value={
'creationStatus': 'OK'
})
response = app.post_json(
'/planitech/slug-planitech/createreservation',
params={
'date': '2018-11-11',
'start_time': '10:00',
'end_time': '11:00',
'place_id': 1,
'price': 10,
'name_id': 'john-doe',
'first_name': 'jon',
'last_name': 'doe',
'email': 'jon.doe@localhost'
}
)
response = app.post_json('/planitech/slug-planitech/createreservation', params=params)
json_resp = response.json
assert json_resp['err'] == 1
assert json_resp['err_desc'] == 'Reservation creation failed: no reservation ID'