2093 |
2093 |
assert other_booking.user_absence_reason == '' # not changed
|
2094 |
2094 |
|
2095 |
2095 |
|
|
2096 |
def test_booking_patch_api_extra_data(app, user):
|
|
2097 |
agenda = Agenda.objects.create(kind='events')
|
|
2098 |
event = Event.objects.create(agenda=agenda, start_datetime=now(), places=10)
|
|
2099 |
booking = Booking.objects.create(event=event, user_was_present=True)
|
|
2100 |
|
|
2101 |
app.authorization = ('Basic', ('john.doe', 'password'))
|
|
2102 |
|
|
2103 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'extra_data': {'foo': 'bar'}})
|
|
2104 |
booking.refresh_from_db()
|
|
2105 |
assert booking.user_was_present is True # not changed
|
|
2106 |
assert booking.extra_data == {'foo': 'bar'}
|
|
2107 |
|
|
2108 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'extra_data': {'foo': 'baz'}})
|
|
2109 |
booking.refresh_from_db()
|
|
2110 |
assert booking.user_was_present is True # not changed
|
|
2111 |
assert booking.extra_data == {'foo': 'baz'}
|
|
2112 |
|
|
2113 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'extra_data': {'foooo': 'bar'}})
|
|
2114 |
booking.refresh_from_db()
|
|
2115 |
assert booking.user_was_present is True # not changed
|
|
2116 |
assert booking.extra_data == {'foo': 'baz', 'foooo': 'bar'}
|
|
2117 |
|
|
2118 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'extra_data': {'foooo': 'baz', 'foo': None}})
|
|
2119 |
booking.refresh_from_db()
|
|
2120 |
assert booking.user_was_present is True # not changed
|
|
2121 |
assert booking.extra_data == {'foo': None, 'foooo': 'baz'}
|
|
2122 |
|
|
2123 |
# make secondary bookings
|
|
2124 |
Booking.objects.create(event=event, primary_booking=booking, user_was_present=False)
|
|
2125 |
Booking.objects.create(event=event, primary_booking=booking, user_was_present=False)
|
|
2126 |
# and other booking
|
|
2127 |
other_booking = Booking.objects.create(event=event)
|
|
2128 |
|
|
2129 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'extra_data': {'foooo': 'baz', 'foo': None}})
|
|
2130 |
assert booking.user_was_present is True # not changed
|
|
2131 |
assert booking.extra_data == {'foo': None, 'foooo': 'baz'}
|
|
2132 |
# all secondary bookings are upadted
|
|
2133 |
assert list(booking.secondary_booking_set.values_list('extra_data', flat=True)) == [
|
|
2134 |
{'foo': None, 'foooo': 'baz'},
|
|
2135 |
{'foo': None, 'foooo': 'baz'},
|
|
2136 |
]
|
|
2137 |
assert list(booking.secondary_booking_set.values_list('user_was_present', flat=True)) == [
|
|
2138 |
False,
|
|
2139 |
False,
|
|
2140 |
] # not changed
|
|
2141 |
other_booking.refresh_from_db()
|
|
2142 |
assert other_booking.extra_data is None # not changed
|
|
2143 |
|
|
2144 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'extra_data': None})
|
|
2145 |
booking.refresh_from_db()
|
|
2146 |
assert booking.user_was_present is True # not changed
|
|
2147 |
assert booking.extra_data == {'foo': None, 'foooo': 'baz'} # not changed
|
|
2148 |
app.patch_json('/api/booking/%s/' % booking.pk, params={'extra_data': {}})
|
|
2149 |
booking.refresh_from_db()
|
|
2150 |
assert booking.user_was_present is True # not changed
|
|
2151 |
assert booking.extra_data == {'foo': None, 'foooo': 'baz'} # not changed
|
|
2152 |
|
|
2153 |
|
2096 |
2154 |
def test_booking_cancellation_api(app, some_data, user):
|
2097 |
2155 |
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
|
2098 |
2156 |
event = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][0]
|
2099 |
|
-
|