0001-api-return-overbooked_places-in-accept-endpoint-resp.patch
chrono/api/views.py | ||
---|---|---|
793 | 793 |
} |
794 | 794 |
return Response(response) |
795 | 795 |
booking.accept() |
796 |
response = {'err': 0, 'booking_id': booking.id} |
|
796 |
event = booking.event |
|
797 |
response = { |
|
798 |
'err': 0, |
|
799 |
'booking_id': booking.pk, |
|
800 |
'overbooked_places': max(0, event.booked_places - event.places), |
|
801 |
} |
|
797 | 802 |
return Response(response) |
798 | 803 | |
799 | 804 |
tests/test_api.py | ||
---|---|---|
1340 | 1340 |
assert resp.json['err_desc'] == 'secondary booking' |
1341 | 1341 | |
1342 | 1342 |
resp = app.post('/api/booking/%s/accept/' % primary.id) |
1343 |
assert resp.json['err'] == 0 |
|
1344 |
assert resp.json['overbooked_places'] == 0 |
|
1343 | 1345 |
assert Booking.objects.filter(in_waiting_list=True).count() == 0 |
1344 | 1346 |
assert Booking.objects.filter(in_waiting_list=False).count() == 2 |
1345 | 1347 |
primary.refresh_from_db() |
... | ... | |
1362 | 1364 |
assert Booking.objects.filter(in_waiting_list=True).count() == 2 |
1363 | 1365 |
assert Booking.objects.filter(in_waiting_list=False).count() == 0 |
1364 | 1366 | |
1367 |
# accept a booking with overbooking |
|
1368 |
event.places = 1 |
|
1369 |
event.save() |
|
1370 |
Booking.objects.update(cancellation_datetime=None) |
|
1371 |
primary.refresh_from_db() |
|
1372 |
primary.suspend() |
|
1373 |
resp = app.post('/api/booking/%s/accept/' % primary.pk) |
|
1374 |
assert resp.json['err'] == 0 |
|
1375 |
assert resp.json['overbooked_places'] == 1 |
|
1376 | ||
1365 | 1377 | |
1366 | 1378 |
def test_suspend_booking(app, some_data, user): |
1367 | 1379 |
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].id |
1368 |
- |