tests: add test on user_external_id exclusion between agendas of different kind or timeperiod (#75587)
This commit is contained in:
parent
be3eedc3fe
commit
07f996ea76
|
@ -2550,3 +2550,70 @@ def test_fillslot_recurring_event_booking_forbidden(app, user):
|
|||
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event.slug))
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_class'] == 'event is recurrent'
|
||||
|
||||
|
||||
# monday 15th march at 12:00 CEST
|
||||
@pytest.mark.freeze_time('2021-03-15T12:00:00+01:00')
|
||||
def test_user_external_id(app, user):
|
||||
user_external_id = 'foobar'
|
||||
meeting_agenda_1 = Agenda.objects.create(
|
||||
label='Meeting agenda', slug='mt1', kind='meetings', minimal_booking_delay=0
|
||||
)
|
||||
desk = Desk.objects.create(agenda=meeting_agenda_1, slug='desk')
|
||||
meeting_type = MeetingType.objects.create(agenda=meeting_agenda_1, slug='mtt')
|
||||
TimePeriod.objects.create(
|
||||
weekday=0, start_time=datetime.time(9, 0), end_time=datetime.time(17, 00), desk=desk
|
||||
)
|
||||
meeting_agenda_2 = meeting_agenda_1.duplicate()
|
||||
meeting_agenda_2.maximal_booking_delay = 20
|
||||
meeting_agenda_2.save()
|
||||
meeting_agenda_3 = meeting_agenda_1.duplicate()
|
||||
meeting_agenda_3.maximal_booking_delay = 30
|
||||
meeting_agenda_3.save()
|
||||
|
||||
virtual_agenda = Agenda.objects.create(label='Virtual Agenda', kind='virtual')
|
||||
virtual_agenda.real_agendas.add(meeting_agenda_1, meeting_agenda_2, meeting_agenda_3)
|
||||
|
||||
meeting_agenda_1_datetimes_url = f'/api/agenda/{meeting_agenda_1.slug}/meetings/{meeting_type.slug}/datetimes/?user_external_id={user_external_id}'
|
||||
meeting_agenda_2_datetimes_url = f'/api/agenda/{meeting_agenda_2.slug}/meetings/{meeting_type.slug}/datetimes/?user_external_id={user_external_id}'
|
||||
meeting_agenda_3_datetimes_url = f'/api/agenda/{meeting_agenda_3.slug}/meetings/{meeting_type.slug}/datetimes/?user_external_id={user_external_id}'
|
||||
virtual_agenda_datetimes_url = f'/api/agenda/{virtual_agenda.slug}/meetings/{meeting_type.slug}/datetimes/?user_external_id={user_external_id}'
|
||||
|
||||
today_at_15 = localtime(now()).replace(hour=15, minute=0)
|
||||
|
||||
# check all slots are free
|
||||
resp = app.get(virtual_agenda_datetimes_url)
|
||||
assert not any(x['disabled'] for x in resp.json['data'])
|
||||
resp = app.get(meeting_agenda_1_datetimes_url)
|
||||
assert not any(x['disabled'] for x in resp.json['data'])
|
||||
resp = app.get(meeting_agenda_2_datetimes_url)
|
||||
assert not any(x['disabled'] for x in resp.json['data'])
|
||||
resp = app.get(meeting_agenda_3_datetimes_url)
|
||||
assert not any(x['disabled'] for x in resp.json['data'])
|
||||
|
||||
for agenda in virtual_agenda.get_real_agendas():
|
||||
meeting_event = Event.objects.create(
|
||||
label='Event',
|
||||
slug='meeting1',
|
||||
start_datetime=today_at_15,
|
||||
agenda=agenda,
|
||||
places=1,
|
||||
meeting_type=agenda.meetingtype_set.all()[0],
|
||||
desk=agenda.desk_set.all()[0],
|
||||
)
|
||||
Booking.objects.create(event=meeting_event, user_external_id=user_external_id)
|
||||
|
||||
# now some slots are disabled
|
||||
resp = app.get(virtual_agenda_datetimes_url)
|
||||
assert any(x['disabled'] for x in resp.json['data'])
|
||||
agenda_datetimes_url = f'/api/agenda/{agenda.slug}/meetings/{meeting_type.slug}/datetimes/?user_external_id={user_external_id}'
|
||||
resp = app.get(agenda_datetimes_url)
|
||||
assert any(x['disabled'] for x in resp.json['data'])
|
||||
for other_agenda in virtual_agenda.get_real_agendas():
|
||||
if other_agenda == agenda:
|
||||
continue
|
||||
other_agenda_datetimes_url = f'/api/agenda/{other_agenda.slug}/meetings/{meeting_type.slug}/datetimes/?user_external_id={user_external_id}'
|
||||
resp = app.get(other_agenda_datetimes_url)
|
||||
assert not any(x['disabled'] for x in resp.json['data'])
|
||||
|
||||
meeting_event.delete()
|
||||
|
|
Loading…
Reference in New Issue