1306 |
1306 |
assert resp.json['err_desc'] == 'sold out'
|
1307 |
1307 |
|
1308 |
1308 |
|
|
1309 |
def test_cancel_booking(app, some_data, user):
|
|
1310 |
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].pk
|
|
1311 |
event = Event.objects.filter(agenda_id=agenda_id).exclude(start_datetime__lt=now())[0]
|
|
1312 |
primary = Booking.objects.create(event=event)
|
|
1313 |
secondary = Booking.objects.create(event=event, primary_booking=primary)
|
|
1314 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
|
1315 |
|
|
1316 |
resp = app.post('/api/booking/%s/cancel/' % secondary.pk)
|
|
1317 |
assert resp.json['err'] == 2
|
|
1318 |
assert resp.json['reason'] == 'secondary booking' # legacy
|
|
1319 |
assert resp.json['err_class'] == 'secondary booking'
|
|
1320 |
assert resp.json['err_desc'] == 'secondary booking'
|
|
1321 |
|
|
1322 |
resp = app.post('/api/booking/%s/cancel/' % primary.pk)
|
|
1323 |
assert resp.json['err'] == 0
|
|
1324 |
primary.refresh_from_db()
|
|
1325 |
secondary.refresh_from_db()
|
|
1326 |
assert primary.cancellation_datetime is not None
|
|
1327 |
assert secondary.cancellation_datetime is not None
|
|
1328 |
|
|
1329 |
|
1309 |
1330 |
def test_accept_booking(app, some_data, user):
|
1310 |
1331 |
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].id
|
1311 |
1332 |
event = Event.objects.filter(agenda_id=agenda_id).exclude(start_datetime__lt=now())[0]
|
... | ... | |
1313 |
1334 |
event.save()
|
1314 |
1335 |
|
1315 |
1336 |
# create a booking on the waiting list
|
1316 |
|
booking = Booking(event=event, in_waiting_list=True)
|
1317 |
|
booking.save()
|
|
1337 |
primary = Booking.objects.create(event=event, in_waiting_list=True)
|
|
1338 |
secondary = Booking.objects.create(event=event, in_waiting_list=True, primary_booking=primary)
|
1318 |
1339 |
|
1319 |
|
assert Booking.objects.filter(in_waiting_list=True).count() == 1
|
|
1340 |
assert Booking.objects.filter(in_waiting_list=True).count() == 2
|
1320 |
1341 |
|
1321 |
1342 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
1322 |
|
resp = app.post('/api/booking/%s/accept/' % booking.id)
|
|
1343 |
|
|
1344 |
resp = app.post('/api/booking/%s/accept/' % secondary.id)
|
|
1345 |
assert resp.json['err'] == 2
|
|
1346 |
assert resp.json['reason'] == 'secondary booking' # legacy
|
|
1347 |
assert resp.json['err_class'] == 'secondary booking'
|
|
1348 |
assert resp.json['err_desc'] == 'secondary booking'
|
|
1349 |
|
|
1350 |
resp = app.post('/api/booking/%s/accept/' % primary.id)
|
1323 |
1351 |
assert Booking.objects.filter(in_waiting_list=True).count() == 0
|
1324 |
|
assert Booking.objects.filter(in_waiting_list=False).count() == 1
|
|
1352 |
assert Booking.objects.filter(in_waiting_list=False).count() == 2
|
|
1353 |
primary.refresh_from_db()
|
|
1354 |
secondary.refresh_from_db()
|
|
1355 |
assert primary.in_waiting_list is False
|
|
1356 |
assert secondary.in_waiting_list is False
|
1325 |
1357 |
|
1326 |
1358 |
# accept a booking that doesn't exist
|
1327 |
|
resp = app.post('/api/booking/%s/accept/' % 9999, status=404)
|
|
1359 |
resp = app.post('/api/booking/0/accept/', status=404)
|
1328 |
1360 |
|
1329 |
1361 |
# accept a booking that was not in the waiting list
|
1330 |
|
resp = app.post('/api/booking/%s/accept/' % booking.id, status=200)
|
1331 |
|
assert resp.json['err'] == 2
|
|
1362 |
resp = app.post('/api/booking/%s/accept/' % primary.id, status=200)
|
|
1363 |
assert resp.json['err'] == 3
|
1332 |
1364 |
|
1333 |
1365 |
# accept a booking that was cancelled before
|
1334 |
|
booking = Booking.objects.get(id=booking.id)
|
1335 |
|
booking.in_waiting_list = True
|
1336 |
|
booking.cancel()
|
1337 |
|
resp = app.post('/api/booking/%s/accept/' % booking.id, status=200)
|
|
1366 |
primary.suspend()
|
|
1367 |
primary.cancel()
|
|
1368 |
resp = app.post('/api/booking/%s/accept/' % primary.id, status=200)
|
1338 |
1369 |
assert resp.json['err'] == 1
|
1339 |
|
assert Booking.objects.filter(in_waiting_list=True).count() == 1
|
|
1370 |
assert Booking.objects.filter(in_waiting_list=True).count() == 2
|
1340 |
1371 |
assert Booking.objects.filter(in_waiting_list=False).count() == 0
|
1341 |
1372 |
|
1342 |
1373 |
|
... | ... | |
1347 |
1378 |
event.save()
|
1348 |
1379 |
|
1349 |
1380 |
# create a booking not on the waiting list
|
1350 |
|
booking = Booking.objects.create(event=event, in_waiting_list=False)
|
1351 |
|
assert booking.in_waiting_list is False
|
|
1381 |
primary = Booking.objects.create(event=event, in_waiting_list=False)
|
|
1382 |
secondary = Booking.objects.create(event=event, in_waiting_list=False, primary_booking=primary)
|
|
1383 |
|
|
1384 |
assert Booking.objects.filter(in_waiting_list=False).count() == 2
|
1352 |
1385 |
|
1353 |
1386 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
1354 |
|
resp = app.post('/api/booking/%s/suspend/' % booking.pk)
|
1355 |
|
booking.refresh_from_db()
|
1356 |
|
assert booking.in_waiting_list is True
|
|
1387 |
|
|
1388 |
resp = app.post('/api/booking/%s/suspend/' % secondary.id)
|
|
1389 |
assert resp.json['err'] == 2
|
|
1390 |
assert resp.json['reason'] == 'secondary booking' # legacy
|
|
1391 |
assert resp.json['err_class'] == 'secondary booking'
|
|
1392 |
assert resp.json['err_desc'] == 'secondary booking'
|
|
1393 |
|
|
1394 |
resp = app.post('/api/booking/%s/suspend/' % primary.pk)
|
|
1395 |
primary.refresh_from_db()
|
|
1396 |
secondary.refresh_from_db()
|
|
1397 |
assert primary.in_waiting_list is True
|
|
1398 |
assert secondary.in_waiting_list is True
|
1357 |
1399 |
|
1358 |
1400 |
# suspend a booking that doesn't exist
|
1359 |
1401 |
resp = app.post('/api/booking/0/suspend/', status=404)
|
1360 |
1402 |
|
1361 |
1403 |
# suspend a booking that is in the waiting list
|
1362 |
|
resp = app.post('/api/booking/%s/suspend/' % booking.pk, status=200)
|
1363 |
|
assert resp.json['err'] == 2
|
|
1404 |
resp = app.post('/api/booking/%s/suspend/' % primary.pk, status=200)
|
|
1405 |
assert resp.json['err'] == 3
|
1364 |
1406 |
|
1365 |
1407 |
# suspend a booking that was cancelled before
|
1366 |
|
booking.in_waiting_list = False
|
1367 |
|
booking.cancel()
|
1368 |
|
resp = app.post('/api/booking/%s/suspend/' % booking.pk, status=200)
|
|
1408 |
primary.accept()
|
|
1409 |
primary.cancel()
|
|
1410 |
resp = app.post('/api/booking/%s/suspend/' % primary.pk, status=200)
|
1369 |
1411 |
assert resp.json['err'] == 1
|
1370 |
|
assert booking.in_waiting_list is False
|
|
1412 |
assert primary.in_waiting_list is False
|
1371 |
1413 |
|
1372 |
1414 |
|
1373 |
1415 |
def test_multiple_booking_api(app, some_data, user):
|
1374 |
|
-
|