vivaticket: require booking end datetime (#34031)

This commit is contained in:
Serghei Mihai 2019-06-13 16:34:45 +02:00
parent 2417d874a9
commit 380d7ca43f
2 changed files with 17 additions and 9 deletions

View File

@ -91,8 +91,14 @@ EVENTBOOK_SCHEMA = {
"type": "string",
"required": True
},
"datetime": {
"description": "event datetime",
"start_datetime": {
"description": "event start datetime",
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}$",
"required": True
},
"end_datetime": {
"description": "event end datetime",
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}$",
"required": True
@ -258,8 +264,8 @@ class VivaTicket(BaseResource):
def book(self, request, post_data, nameid=None):
booking = {
'externalCode': post_data['id'],
'startDateTime': post_data['datetime'],
'endDateTime': post_data['datetime'],
'startDateTime': post_data['start_datetime'],
'endDateTime': post_data['end_datetime'],
'comment': post_data.get('comment', ''),
'contact': self.get_or_create_contact(post_data, nameid),
'roomList': [{
@ -267,8 +273,8 @@ class VivaTicket(BaseResource):
'roomCode': post_data['room'],
'themeCode': post_data['theme'],
'quantity': post_data['quantity'],
'startDateTime': post_data['datetime'],
'endDateTime': post_data['datetime']
'startDateTime': post_data['start_datetime'],
'endDateTime': post_data['end_datetime']
}]
}
headers = {'X-Vivaticket-Form-URL': post_data['form_url']}

View File

@ -307,7 +307,8 @@ def test_book(mocked_get, mocked_put, mocked_post, app, connector):
url = utils.generic_endpoint_url('vivaticket', 'book')
payload = {'id': 'formid', 'email': 'foo@example.com'}
response = app.post_json(url, params=payload, status=400)
payload['datetime'] = '2019-01-15'
payload['start_datetime'] = '2019-01-15'
payload['end_datetime'] = '2019-01-15'
payload['event'] = '01'
payload['theme'] = '001'
payload['room'] = 'v001'
@ -316,7 +317,8 @@ def test_book(mocked_get, mocked_put, mocked_post, app, connector):
payload['form_url'] = "http://mysite.com/form/id/"
response = app.post_json(url, params=payload, status=400)
assert "does not match '^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}$" in response.json['err_desc']
payload['datetime'] = '2019-01-15T10:00'
payload['start_datetime'] = '2019-01-15T10:00'
payload['end_datetime'] = '2019-01-15T11:00'
# first return the API key, then the result of the booking creation
mocked_post.side_effect = [
utils.FakedResponse(content=KEY_RESPONSE, status_code=200),
@ -327,7 +329,7 @@ def test_book(mocked_get, mocked_put, mocked_post, app, connector):
assert mocked_post.call_args[1]['json']['Key'] == '86569D0CA1B1CBEF8D77DD5BDC9F5CBAE5C99074'
assert mocked_post.call_args[1]['json']['Booking']['externalCode'] == 'formid'
assert mocked_post.call_args[1]['json']['Booking']['startDateTime'] == '2019-01-15T10:00'
assert mocked_post.call_args[1]['json']['Booking']['endDateTime'] == '2019-01-15T10:00'
assert mocked_post.call_args[1]['json']['Booking']['endDateTime'] == '2019-01-15T11:00'
assert mocked_post.call_args[1]['json']['Booking']['comment'] == 'My comment'
assert mocked_post.call_args[1]['json']['Booking']['contact'] == {'InternalCode': '0000000273'}
assert mocked_post.call_args[1]['headers'] == {'X-Vivaticket-Form-URL': 'http://mysite.com/form/id/'}