781 |
781 |
assert 'Failed to retrieve remote calendar (https://example.com/foo.ics, SSL error).' in resp.text
|
782 |
782 |
|
783 |
783 |
|
|
784 |
@mock.patch('chrono.agendas.models.requests.get')
|
|
785 |
def test_agenda_import_time_period_exception_url_desk_all_desks(mocked_get, app, admin_user):
|
|
786 |
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
|
|
787 |
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
|
788 |
|
|
789 |
# only one desk: no option to apply to all desks
|
|
790 |
app = login(app)
|
|
791 |
resp = app.get('/manage/agendas/desk/%s/import-exceptions-from-ics/' % desk.pk)
|
|
792 |
assert 'all_desks' not in resp.form.fields
|
|
793 |
# more than one desk
|
|
794 |
Desk.objects.create(agenda=agenda, label='Desk B')
|
|
795 |
agenda2 = Agenda.objects.create(label='Foo bar', kind='meetings')
|
|
796 |
Desk.objects.create(agenda=agenda2, label='Other Desk') # check exceptions are not created for this one
|
|
797 |
resp = app.get('/manage/agendas/desk/%s/import-exceptions-from-ics/' % desk.pk)
|
|
798 |
resp.form['all_desks'] = True
|
|
799 |
resp.form['ics_url'] = 'http://example.com/foo.ics'
|
|
800 |
mocked_response = mock.Mock()
|
|
801 |
mocked_response.text = """BEGIN:VCALENDAR
|
|
802 |
VERSION:2.0
|
|
803 |
PRODID:-//foo.bar//EN
|
|
804 |
BEGIN:VEVENT
|
|
805 |
DTSTART:20180101
|
|
806 |
DTEND:20180101
|
|
807 |
SUMMARY:New Year's Eve
|
|
808 |
END:VEVENT
|
|
809 |
END:VCALENDAR"""
|
|
810 |
mocked_get.return_value = mocked_response
|
|
811 |
resp = resp.form.submit(status=302)
|
|
812 |
assert TimePeriodException.objects.count() == 2
|
|
813 |
assert TimePeriodException.objects.filter(desk__slug='desk-a').exists()
|
|
814 |
assert TimePeriodException.objects.filter(desk__slug='desk-b').exists()
|
|
815 |
agenda = Agenda.objects.create(label='New Example', kind='meetings', desk_simple_management=True)
|
|
816 |
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
|
817 |
desk.duplicate()
|
|
818 |
assert agenda.is_available_for_simple_management() is True
|
|
819 |
|
|
820 |
|
|
821 |
def test_agenda_import_time_period_exception_file_desk_all_desks(app, admin_user):
|
|
822 |
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
|
|
823 |
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
|
824 |
|
|
825 |
# only one desk: no option to apply to all desks
|
|
826 |
app = login(app)
|
|
827 |
resp = app.get('/manage/agendas/desk/%s/import-exceptions-from-ics/' % desk.pk)
|
|
828 |
assert 'all_desks' not in resp.form.fields
|
|
829 |
# more than one desk
|
|
830 |
Desk.objects.create(agenda=agenda, label='Desk B')
|
|
831 |
agenda2 = Agenda.objects.create(label='Foo bar', kind='meetings')
|
|
832 |
Desk.objects.create(agenda=agenda2, label='Other Desk') # check exceptions are not created for this one
|
|
833 |
resp = app.get('/manage/agendas/desk/%s/import-exceptions-from-ics/' % desk.pk)
|
|
834 |
resp.form['all_desks'] = True
|
|
835 |
ics_exceptions = b"""BEGIN:VCALENDAR
|
|
836 |
VERSION:2.0
|
|
837 |
PRODID:-//foo.bar//EN
|
|
838 |
BEGIN:VEVENT
|
|
839 |
DTSTART:20180101
|
|
840 |
DTEND:20180101
|
|
841 |
SUMMARY:New Year's Eve
|
|
842 |
END:VEVENT
|
|
843 |
END:VCALENDAR"""
|
|
844 |
resp.form['ics_file'] = Upload('exceptions.ics', ics_exceptions, 'text/calendar')
|
|
845 |
resp = resp.form.submit(status=302)
|
|
846 |
assert TimePeriodException.objects.count() == 2
|
|
847 |
assert TimePeriodException.objects.filter(desk__slug='desk-a').exists()
|
|
848 |
assert TimePeriodException.objects.filter(desk__slug='desk-b').exists()
|
|
849 |
agenda = Agenda.objects.create(label='New Example', kind='meetings', desk_simple_management=True)
|
|
850 |
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
|
851 |
desk.duplicate()
|
|
852 |
assert agenda.is_available_for_simple_management() is True
|
|
853 |
|
|
854 |
|
784 |
855 |
@mock.patch('chrono.agendas.models.requests.get')
|
785 |
856 |
def test_agenda_import_time_period_exception_url_desk_simple_management(mocked_get, app, admin_user):
|
786 |
857 |
agenda = Agenda.objects.create(label='New Example', kind='meetings', desk_simple_management=True)
|
... | ... | |
790 |
861 |
|
791 |
862 |
login(app)
|
792 |
863 |
resp = app.get('/manage/agendas/desk/%s/import-exceptions-from-ics/' % desk.pk)
|
|
864 |
assert 'all_desks' not in resp.form.fields
|
793 |
865 |
resp.form['ics_url'] = 'http://example.com/foo.ics'
|
794 |
866 |
mocked_response = mock.Mock()
|
795 |
867 |
mocked_response.text = """BEGIN:VCALENDAR
|
... | ... | |
815 |
887 |
|
816 |
888 |
login(app)
|
817 |
889 |
resp = app.get('/manage/agendas/desk/%s/import-exceptions-from-ics/' % desk.pk)
|
|
890 |
assert 'all_desks' not in resp.form.fields
|
818 |
891 |
ics_exceptions = b"""BEGIN:VCALENDAR
|
819 |
892 |
VERSION:2.0
|
820 |
893 |
PRODID:-//foo.bar//EN
|
821 |
|
-
|