3586 |
3586 |
assert len(resp.json['data']) == 3
|
3587 |
3587 |
|
3588 |
3588 |
|
|
3589 |
def test_virtual_agendas_meetings_datetimes_api_with_similar_desk(app):
|
|
3590 |
agenda_foo = Agenda.objects.create(
|
|
3591 |
label=u'Agenda Foo', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=3
|
|
3592 |
)
|
|
3593 |
meeting_type_foo = MeetingType.objects.create(agenda=agenda_foo, label='Meeting Type', duration=30)
|
|
3594 |
test_1st_weekday = (now()).weekday() + 1 % 7
|
|
3595 |
test_2nd_weekday = localtime(now()).weekday() + 2 % 7
|
|
3596 |
test_3rd_weekday = (now()).weekday() + 3 % 7
|
|
3597 |
|
|
3598 |
desk_foo = Desk.objects.create(agenda=agenda_foo, label='Desk 1')
|
|
3599 |
TimePeriod.objects.create(
|
|
3600 |
weekday=test_1st_weekday,
|
|
3601 |
start_time=datetime.time(10, 0),
|
|
3602 |
end_time=datetime.time(12, 0),
|
|
3603 |
desk=desk_foo,
|
|
3604 |
)
|
|
3605 |
TimePeriod.objects.create(
|
|
3606 |
weekday=test_2nd_weekday,
|
|
3607 |
start_time=datetime.time(10, 0),
|
|
3608 |
end_time=datetime.time(12, 0),
|
|
3609 |
desk=desk_foo,
|
|
3610 |
)
|
|
3611 |
TimePeriod.objects.create(
|
|
3612 |
weekday=test_3rd_weekday,
|
|
3613 |
start_time=datetime.time(10, 0),
|
|
3614 |
end_time=datetime.time(12, 0),
|
|
3615 |
desk=desk_foo,
|
|
3616 |
)
|
|
3617 |
|
|
3618 |
agenda_bar = Agenda.objects.create(
|
|
3619 |
label=u'Agenda Bar', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=3
|
|
3620 |
)
|
|
3621 |
meeting_type_bar = MeetingType.objects.create(agenda=agenda_bar, label='Meeting Type', duration=30)
|
|
3622 |
desk_bar = Desk.objects.create(agenda=agenda_bar, label='Desk 1')
|
|
3623 |
TimePeriod.objects.create(
|
|
3624 |
weekday=test_1st_weekday,
|
|
3625 |
start_time=datetime.time(10, 0),
|
|
3626 |
end_time=datetime.time(12, 0),
|
|
3627 |
desk=desk_bar,
|
|
3628 |
)
|
|
3629 |
TimePeriod.objects.create(
|
|
3630 |
weekday=test_2nd_weekday,
|
|
3631 |
start_time=datetime.time(10, 0),
|
|
3632 |
end_time=datetime.time(12, 0),
|
|
3633 |
desk=desk_bar,
|
|
3634 |
)
|
|
3635 |
TimePeriod.objects.create(
|
|
3636 |
weekday=test_3rd_weekday,
|
|
3637 |
start_time=datetime.time(10, 0),
|
|
3638 |
end_time=datetime.time(12, 0),
|
|
3639 |
desk=desk_bar,
|
|
3640 |
)
|
|
3641 |
|
|
3642 |
virtual_agenda = Agenda.objects.create(
|
|
3643 |
label=u'Agenda Virtual', kind='virtual', minimal_booking_delay=1, maximal_booking_delay=3
|
|
3644 |
)
|
|
3645 |
VirtualMember.objects.create(virtual_agenda=virtual_agenda, real_agenda=agenda_foo)
|
|
3646 |
VirtualMember.objects.create(virtual_agenda=virtual_agenda, real_agenda=agenda_bar)
|
|
3647 |
|
|
3648 |
# 4 slots each day * 3 days
|
|
3649 |
foo_api_url = '/api/agenda/%s/meetings/%s/datetimes/' % (agenda_foo.slug, meeting_type_bar.slug)
|
|
3650 |
resp = app.get(foo_api_url)
|
|
3651 |
assert len(resp.json['data']) == 12
|
|
3652 |
# same thing bar agenda
|
|
3653 |
bar_api_url = '/api/agenda/%s/meetings/%s/datetimes/' % (agenda_foo.slug, meeting_type_bar.slug)
|
|
3654 |
resp = app.get(bar_api_url)
|
|
3655 |
assert len(resp.json['data']) == 12
|
|
3656 |
# same thing on the virtual agenda
|
|
3657 |
virtual_api_url = '/api/agenda/%s/meetings/%s/datetimes/' % (virtual_agenda.slug, meeting_type_bar.slug)
|
|
3658 |
resp = app.get(virtual_api_url)
|
|
3659 |
assert len(resp.json['data']) == 12
|
|
3660 |
|
|
3661 |
# exclude first day
|
|
3662 |
start = (now() + datetime.timedelta(days=1)).replace(hour=0, minute=0, second=0, microsecond=0)
|
|
3663 |
end = (now() + datetime.timedelta(days=1)).replace(hour=23, minute=59, second=59, microsecond=0)
|
|
3664 |
TimePeriodException.objects.create(start_datetime=start, end_datetime=end, desk=desk_foo)
|
|
3665 |
TimePeriodException.objects.create(start_datetime=start, end_datetime=end, desk=desk_bar)
|
|
3666 |
# exclude second day
|
|
3667 |
start = (now() + datetime.timedelta(days=2)).replace(hour=0, minute=0, second=0, microsecond=0)
|
|
3668 |
end = (now() + datetime.timedelta(days=2)).replace(hour=23, minute=59, second=59, microsecond=0)
|
|
3669 |
TimePeriodException.objects.create(start_datetime=start, end_datetime=end, desk=desk_foo)
|
|
3670 |
TimePeriodException.objects.create(start_datetime=start, end_datetime=end, desk=desk_bar)
|
|
3671 |
|
|
3672 |
# 4 slots each day * 1 day
|
|
3673 |
resp = app.get(foo_api_url)
|
|
3674 |
assert len(resp.json['data']) == 4
|
|
3675 |
# same thing bar agenda
|
|
3676 |
resp = app.get(bar_api_url)
|
|
3677 |
assert len(resp.json['data']) == 4
|
|
3678 |
# same thing on the virtual agenda
|
|
3679 |
resp = app.get(virtual_api_url)
|
|
3680 |
assert len(resp.json['data']) == 4
|
|
3681 |
|
|
3682 |
|
3589 |
3683 |
def test_virtual_agendas_meetings_datetimes_delays_api(app, mock_now):
|
3590 |
3684 |
foo_agenda = Agenda.objects.create(label='Foo Meeting', kind='meetings', maximal_booking_delay=7)
|
3591 |
3685 |
MeetingType.objects.create(agenda=foo_agenda, label='Meeting Type', duration=30)
|
3592 |
|
-
|