150 |
150 |
assert resp2.content_type == 'application/javascript'
|
151 |
151 |
|
152 |
152 |
|
|
153 |
def test_events_agenda_redirect(app, admin_user):
|
|
154 |
agenda = Agenda.objects.create(label=u'Foo Bar', kind='events')
|
|
155 |
|
|
156 |
app = login(app)
|
|
157 |
resp = app.get('/manage/agendas/%s/' % agenda.pk, status=302)
|
|
158 |
assert resp.location.endswith('/manage/agendas/%s/month/' % agenda.pk)
|
|
159 |
|
|
160 |
|
|
161 |
@freezegun.freeze_time('2020-07-12')
|
|
162 |
def test_events_agenda_month_redirect(app, admin_user):
|
|
163 |
agenda = Agenda.objects.create(label=u'Foo Bar', kind='events')
|
|
164 |
|
|
165 |
app = login(app)
|
|
166 |
# no event, redirect to current month
|
|
167 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
168 |
assert resp.location.endswith('/manage/agendas/%s/2020/7/' % agenda.pk)
|
|
169 |
|
|
170 |
# only past events, redirect to last event month
|
|
171 |
Event.objects.create(
|
|
172 |
agenda=agenda, places=1, start_datetime=now() - datetime.timedelta(days=60),
|
|
173 |
)
|
|
174 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
175 |
assert resp.location.endswith('/manage/agendas/%s/2020/5/' % agenda.pk)
|
|
176 |
Event.objects.create(
|
|
177 |
agenda=agenda, places=1, start_datetime=now() - datetime.timedelta(days=30),
|
|
178 |
)
|
|
179 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
180 |
assert resp.location.endswith('/manage/agendas/%s/2020/6/' % agenda.pk)
|
|
181 |
|
|
182 |
# future events
|
|
183 |
Event.objects.create(
|
|
184 |
agenda=agenda, places=1, start_datetime=now() + datetime.timedelta(days=60),
|
|
185 |
)
|
|
186 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
187 |
assert resp.location.endswith('/manage/agendas/%s/2020/9/' % agenda.pk)
|
|
188 |
Event.objects.create(
|
|
189 |
agenda=agenda, places=1, start_datetime=now() + datetime.timedelta(days=30),
|
|
190 |
)
|
|
191 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
192 |
assert resp.location.endswith('/manage/agendas/%s/2020/8/' % agenda.pk)
|
|
193 |
|
|
194 |
# wrong kind
|
|
195 |
agenda.kind = 'virtual'
|
|
196 |
agenda.save()
|
|
197 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
198 |
assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk)
|
|
199 |
agenda.kind = 'meetings'
|
|
200 |
agenda.save()
|
|
201 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
202 |
assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk)
|
|
203 |
|
|
204 |
|
|
205 |
@freezegun.freeze_time('2020-07-12')
|
|
206 |
def test_meetings_agenda_redirect(app, admin_user):
|
|
207 |
agenda = Agenda.objects.create(label=u'Foo Bar', kind='meetings')
|
|
208 |
|
|
209 |
app = login(app)
|
|
210 |
resp = app.get('/manage/agendas/%s/' % agenda.pk, status=302)
|
|
211 |
assert resp.location.endswith('/manage/agendas/%s/2020/7/12/' % agenda.pk)
|
|
212 |
|
|
213 |
|
|
214 |
def test_virtual_agenda_redirect(app, admin_user):
|
|
215 |
agenda = Agenda.objects.create(label=u'Foo Bar', kind='virtual')
|
|
216 |
|
|
217 |
app = login(app)
|
|
218 |
resp = app.get('/manage/agendas/%s/' % agenda.pk) # no redirection
|
|
219 |
|
|
220 |
|
153 |
221 |
def test_view_agendas_as_manager(app, manager_user):
|
154 |
222 |
agenda = Agenda(label=u'Foo Bar')
|
155 |
223 |
agenda.view_role = manager_user.groups.all()[0]
|
... | ... | |
639 |
707 |
agenda.view_role = manager_user.groups.all()[0]
|
640 |
708 |
agenda.save()
|
641 |
709 |
app = login(app, username='manager', password='manager')
|
642 |
|
resp = app.get('/manage/', status=200)
|
643 |
|
resp = app.get('/manage/agendas/add/', status=403)
|
|
710 |
app.get('/manage/agendas/add/', status=403)
|
644 |
711 |
|
645 |
712 |
|
646 |
713 |
def test_options_agenda(app, admin_user):
|
647 |
714 |
agenda = Agenda(label=u'Foo bar')
|
648 |
715 |
agenda.save()
|
649 |
716 |
app = login(app)
|
650 |
|
resp = app.get('/manage/', status=200)
|
651 |
|
resp = resp.click('Foo bar').follow()
|
652 |
|
resp = resp.click('Settings')
|
|
717 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
653 |
718 |
resp = resp.click('Options')
|
654 |
719 |
assert resp.form['label'].value == 'Foo bar'
|
655 |
720 |
resp.form['label'] = 'Foo baz'
|
... | ... | |
691 |
756 |
agenda.save()
|
692 |
757 |
app = login(app, username='manager', password='manager')
|
693 |
758 |
resp = app.get('/manage/', status=200)
|
694 |
|
resp = resp.click('Foo bar')
|
695 |
|
assert not 'Settings' in resp.text
|
|
759 |
resp = resp.click('Foo bar').follow().follow()
|
|
760 |
assert 'Settings' not in resp.text
|
696 |
761 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=403)
|
697 |
762 |
resp = app.get('/manage/agendas/%s/edit' % agenda.id, status=403)
|
698 |
763 |
agenda.kind = 'meetings'
|
... | ... | |
707 |
772 |
agenda.edit_role = manager_user.groups.all()[0]
|
708 |
773 |
agenda.save()
|
709 |
774 |
|
710 |
|
resp = app.get('/manage/', status=200)
|
711 |
|
resp = resp.click('Foo bar').follow()
|
712 |
|
resp = resp.click('Settings')
|
|
775 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
713 |
776 |
resp = resp.click('Options')
|
714 |
777 |
assert resp.form['label'].value == 'Foo bar'
|
715 |
778 |
resp.form['label'] = 'Foo baz'
|
... | ... | |
805 |
868 |
agenda.save()
|
806 |
869 |
app = login(app)
|
807 |
870 |
resp = app.get('/manage/', status=200)
|
808 |
|
resp = resp.click('Foo bar').follow()
|
809 |
|
resp = resp.click('Settings')
|
|
871 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
810 |
872 |
resp = resp.click('Delete')
|
811 |
873 |
resp = resp.form.submit()
|
812 |
874 |
assert resp.location.endswith('/manage/')
|
813 |
875 |
resp = resp.follow()
|
814 |
|
assert not 'Foo bar' in resp.text
|
|
876 |
assert 'Foo bar' not in resp.text
|
815 |
877 |
|
816 |
878 |
|
817 |
879 |
def test_delete_busy_agenda(app, admin_user):
|
... | ... | |
821 |
883 |
event.save()
|
822 |
884 |
|
823 |
885 |
app = login(app)
|
824 |
|
resp = app.get('/manage/', status=200)
|
825 |
|
resp = resp.click('Foo bar').follow()
|
826 |
|
resp = resp.click('Settings')
|
|
886 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
827 |
887 |
resp = resp.click('Delete')
|
828 |
888 |
assert 'Are you sure you want to delete this?' in resp.text
|
829 |
889 |
|
830 |
890 |
booking = Booking(event=event)
|
831 |
891 |
booking.save()
|
832 |
|
resp = app.get('/manage/', status=200)
|
833 |
|
resp = resp.click('Foo bar').follow()
|
834 |
|
resp = resp.click('Settings')
|
|
892 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
835 |
893 |
resp = resp.click('Delete')
|
836 |
894 |
assert 'This cannot be removed' in resp.text
|
837 |
895 |
|
838 |
896 |
booking.cancellation_datetime = now()
|
839 |
897 |
booking.save()
|
840 |
|
resp = app.get('/manage/', status=200)
|
841 |
|
resp = resp.click('Foo bar').follow()
|
842 |
|
resp = resp.click('Settings')
|
|
898 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
843 |
899 |
resp = resp.click('Delete')
|
844 |
900 |
assert 'Are you sure you want to delete this?' in resp.text
|
845 |
901 |
|
... | ... | |
855 |
911 |
agenda.edit_role = manager_user.groups.all()[0]
|
856 |
912 |
agenda.save()
|
857 |
913 |
app = login(app, username='manager', password='manager')
|
858 |
|
resp = app.get('/manage/', status=200)
|
859 |
|
resp = resp.click('Foo bar').follow()
|
860 |
|
resp = resp.click('Settings')
|
|
914 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
861 |
915 |
assert 'Options' in resp.text
|
862 |
916 |
assert 'Delete' not in resp.text
|
863 |
917 |
resp = app.get('/manage/agendas/%s/delete' % agenda.id, status=403)
|
... | ... | |
874 |
928 |
|
875 |
929 |
app = login(app)
|
876 |
930 |
resp = app.get('/manage/', status=200)
|
877 |
|
resp = resp.click('Foo bar').follow()
|
878 |
|
resp = resp.click('Settings')
|
|
931 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
879 |
932 |
desk_page = resp.click('Desk A')
|
880 |
933 |
desk_delete_page = desk_page.click('Delete')
|
881 |
934 |
assert 'Are you sure you want to delete this?' in desk_delete_page.text
|
... | ... | |
964 |
1017 |
agenda.edit_role = manager_user.groups.all()[0]
|
965 |
1018 |
agenda.save()
|
966 |
1019 |
|
967 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
968 |
|
resp = resp.click('Settings')
|
|
1020 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
969 |
1021 |
assert '<h2>Settings' in resp.text
|
970 |
1022 |
resp = resp.click('New Event')
|
971 |
1023 |
resp.form['start_datetime$date'] = '2016-02-15'
|
... | ... | |
1397 |
1449 |
agenda = Agenda(label=u'Foo bar', kind='meetings')
|
1398 |
1450 |
agenda.save()
|
1399 |
1451 |
app = login(app)
|
1400 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
1401 |
|
resp = resp.click('Settings')
|
|
1452 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1402 |
1453 |
assert "This agenda doesn't have any meeting type yet." in resp.text
|
1403 |
1454 |
resp = resp.click('New Meeting Type')
|
1404 |
1455 |
resp.form['label'] = 'Blah'
|
... | ... | |
1429 |
1480 |
meeting_type.save()
|
1430 |
1481 |
|
1431 |
1482 |
app = login(app)
|
1432 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
1433 |
|
resp = resp.click('Settings')
|
|
1483 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1434 |
1484 |
resp = resp.click('Blah')
|
1435 |
1485 |
resp = resp.click('Delete')
|
1436 |
1486 |
assert 'Are you sure you want to delete this?' in resp.text
|
... | ... | |
1442 |
1492 |
assert '__deleted__' in meeting_type.slug
|
1443 |
1493 |
|
1444 |
1494 |
# meeting type not showing up anymore
|
1445 |
|
resp = app.get('/manage/', status=200)
|
1446 |
|
resp = resp.click('Foo').follow()
|
1447 |
|
resp = resp.click('Settings')
|
|
1495 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1448 |
1496 |
assert 'Meeting Type Foo' not in resp.text
|
1449 |
1497 |
|
1450 |
1498 |
# it is possible to add a new meeting type with the same slug
|
... | ... | |
1564 |
1612 |
agenda.edit_role = manager_user.groups.all()[0]
|
1565 |
1613 |
agenda.save()
|
1566 |
1614 |
|
1567 |
|
resp = app.get('/manage/agendas/%d/' % agenda.id).follow()
|
1568 |
|
resp = resp.click('Settings')
|
|
1615 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1569 |
1616 |
assert 'Add a time period' in resp.text
|
1570 |
1617 |
assert '/manage/timeperiods/%s/edit' % time_period.id in resp.text
|
1571 |
1618 |
assert '/manage/timeperiods/%s/delete' % time_period.id in resp.text
|
... | ... | |
1586 |
1633 |
agenda = Agenda.objects.get(slug='foo-bar')
|
1587 |
1634 |
MeetingType(agenda=agenda, label='Blah').save()
|
1588 |
1635 |
|
1589 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
1590 |
|
resp = resp.click('Settings')
|
|
1636 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1591 |
1637 |
resp = resp.click('New Desk')
|
1592 |
1638 |
resp.form['label'] = 'Desk A'
|
1593 |
1639 |
resp = resp.form.submit().follow()
|
... | ... | |
1643 |
1689 |
agenda = Agenda.objects.get(slug='foo-bar')
|
1644 |
1690 |
MeetingType(agenda=agenda, label='Blah').save()
|
1645 |
1691 |
|
1646 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
1647 |
|
resp = resp.click('Settings')
|
|
1692 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1648 |
1693 |
resp = resp.click('New Desk')
|
1649 |
1694 |
resp.form['label'] = 'Desk A'
|
1650 |
1695 |
resp = resp.form.submit().follow()
|
... | ... | |
1709 |
1754 |
)
|
1710 |
1755 |
Booking.objects.create(event=event)
|
1711 |
1756 |
login(app)
|
1712 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1713 |
|
resp = resp.click('Settings')
|
|
1757 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1714 |
1758 |
resp = resp.click('Add a time period exception')
|
1715 |
1759 |
resp = resp.form.submit() # submit empty form
|
1716 |
1760 |
# fields should be marked with errors
|
... | ... | |
1739 |
1783 |
event=event, cancellation_datetime=make_aware(datetime.datetime(2017, 5, 20, 10, 30))
|
1740 |
1784 |
)
|
1741 |
1785 |
login(app)
|
1742 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1743 |
|
resp = resp.click('Settings')
|
|
1786 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1744 |
1787 |
resp = resp.click('Add a time period exception')
|
1745 |
1788 |
resp.form['start_datetime$date'] = '2017-05-22'
|
1746 |
1789 |
resp.form['start_datetime$time'] = '08:00'
|
... | ... | |
1794 |
1837 |
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1795 |
1838 |
)
|
1796 |
1839 |
login(app)
|
1797 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1798 |
|
resp = resp.click('Settings')
|
|
1840 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1799 |
1841 |
resp = resp.click('Add a time period exception')
|
1800 |
1842 |
today = datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
|
1801 |
1843 |
tomorrow = make_aware(today + datetime.timedelta(days=15))
|
... | ... | |
1947 |
1989 |
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1948 |
1990 |
)
|
1949 |
1991 |
login(app)
|
1950 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1951 |
|
resp = resp.click('Settings')
|
|
1992 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1952 |
1993 |
resp = resp.click('upload')
|
1953 |
1994 |
ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR
|
1954 |
1995 |
VERSION:2.0
|
... | ... | |
2100 |
2141 |
)
|
2101 |
2142 |
login(app)
|
2102 |
2143 |
# import a source
|
2103 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2104 |
|
resp = resp.click('Settings')
|
|
2144 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2105 |
2145 |
resp = resp.click('upload')
|
2106 |
2146 |
ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR
|
2107 |
2147 |
VERSION:2.0
|
... | ... | |
2120 |
2160 |
assert source1.timeperiodexception_set.count() == 2
|
2121 |
2161 |
|
2122 |
2162 |
# import another one
|
2123 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2124 |
|
resp = resp.click('Settings')
|
|
2163 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2125 |
2164 |
resp = resp.click('upload')
|
2126 |
2165 |
resp.form['ics_file'] = Upload('exceptions.ics', ics_with_recurrent_exceptions, 'text/calendar')
|
2127 |
2166 |
resp = resp.form.submit(status=302).follow()
|
... | ... | |
2130 |
2169 |
assert source2.timeperiodexception_set.count() == 2
|
2131 |
2170 |
|
2132 |
2171 |
# delete the second one
|
2133 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2134 |
|
resp = resp.click('Settings')
|
|
2172 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2135 |
2173 |
resp = resp.click('upload')
|
2136 |
2174 |
resp = resp.click(href='/manage/time-period-exceptions-source/%d/delete' % source2.pk)
|
2137 |
2175 |
resp = resp.form.submit().follow()
|
... | ... | |
2140 |
2178 |
assert TimePeriodExceptionSource.objects.filter(pk=source2.pk).exists() is False
|
2141 |
2179 |
|
2142 |
2180 |
# delete the first one
|
2143 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2144 |
|
resp = resp.click('Settings')
|
|
2181 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2145 |
2182 |
resp = resp.click('upload')
|
2146 |
2183 |
resp = resp.click(href='/manage/time-period-exceptions-source/%d/delete' % source1.pk)
|
2147 |
2184 |
resp = resp.form.submit().follow()
|
... | ... | |
2170 |
2207 |
|
2171 |
2208 |
login(app)
|
2172 |
2209 |
# import a source from a file
|
2173 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2174 |
|
resp = resp.click('Settings')
|
|
2210 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2175 |
2211 |
resp = resp.click('upload')
|
2176 |
2212 |
resp.form['ics_file'] = Upload('exceptions.ics', ics_file_content, 'text/calendar')
|
2177 |
2213 |
resp = resp.form.submit(status=302).follow()
|
... | ... | |
2182 |
2218 |
old_ics_file_path = source.ics_file.path
|
2183 |
2219 |
|
2184 |
2220 |
# replace the source
|
2185 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2186 |
|
resp = resp.click('Settings')
|
|
2221 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2187 |
2222 |
resp = resp.click('upload')
|
2188 |
2223 |
resp = resp.click(href='/manage/time-period-exceptions-source/%d/replace' % source.pk)
|
2189 |
2224 |
resp.form['ics_newfile'] = Upload('exceptions.ics', ics_file_content, 'text/calendar')
|
... | ... | |
2218 |
2253 |
|
2219 |
2254 |
login(app)
|
2220 |
2255 |
# import a source from an url
|
2221 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2222 |
|
resp = resp.click('Settings')
|
|
2256 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2223 |
2257 |
resp = resp.click('upload')
|
2224 |
2258 |
resp.form['ics_url'] = 'http://example.com/foo.ics'
|
2225 |
2259 |
mocked_response = mock.Mock()
|
... | ... | |
2232 |
2266 |
exceptions = list(source.timeperiodexception_set.order_by('pk'))
|
2233 |
2267 |
|
2234 |
2268 |
# refresh the source
|
2235 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2236 |
|
resp = resp.click('Settings')
|
|
2269 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2237 |
2270 |
resp = resp.click('upload')
|
2238 |
2271 |
mocked_response = mock.Mock()
|
2239 |
2272 |
mocked_response.text = ics_url_content
|
... | ... | |
2249 |
2282 |
agenda = Agenda.objects.create(label='New Example', kind='meetings')
|
2250 |
2283 |
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
2251 |
2284 |
desk.save()
|
|
2285 |
today = datetime.date.today()
|
2252 |
2286 |
|
2253 |
2287 |
meetingtype = MeetingType(agenda=agenda, label='Bar', duration=30)
|
2254 |
2288 |
meetingtype.save()
|
2255 |
2289 |
|
2256 |
2290 |
login(app)
|
2257 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302)
|
2258 |
|
today = datetime.date.today()
|
2259 |
|
assert resp.location.endswith('%s/%s/%s/' % (today.year, today.month, today.day))
|
2260 |
|
resp = resp.follow()
|
|
2291 |
resp = app.get('/manage/agendas/%s/%s/%s/%s/' % (agenda.pk, today.year, today.month, today.day))
|
2261 |
2292 |
assert 'No opening hours this day.' in resp.text # no time pediod
|
2262 |
2293 |
|
2263 |
2294 |
timeperiod = TimePeriod(
|
2264 |
2295 |
desk=desk, weekday=today.weekday(), start_time=datetime.time(10, 0), end_time=datetime.time(18, 0)
|
2265 |
2296 |
)
|
2266 |
2297 |
timeperiod.save()
|
2267 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302).follow()
|
|
2298 |
resp = app.get('/manage/agendas/%s/%s/%s/%s/' % (agenda.pk, today.year, today.month, today.day))
|
2268 |
2299 |
assert 'No opening hours this day.' not in resp.text
|
2269 |
2300 |
assert 'div class="booking' not in resp.text
|
2270 |
2301 |
assert resp.text.count('<tr') == 9 # 10->18 (not included)
|
2271 |
2302 |
|
2272 |
2303 |
timeperiod.end_time = datetime.time(18, 30) # end during an hour
|
2273 |
2304 |
timeperiod.save()
|
2274 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302).follow()
|
|
2305 |
resp = app.get('/manage/agendas/%s/%s/%s/%s/' % (agenda.pk, today.year, today.month, today.day))
|
2275 |
2306 |
assert resp.text.count('<tr') == 10 # 10->18 (included)
|
2276 |
2307 |
|
2277 |
2308 |
# check opening hours cells
|
... | ... | |
2370 |
2401 |
timeperiod.save()
|
2371 |
2402 |
|
2372 |
2403 |
login(app)
|
2373 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302).follow()
|
|
2404 |
resp = app.get('/manage/agendas/%s/%s/%s/%s/' % (agenda.pk, today.year, today.month, today.day))
|
2374 |
2405 |
assert resp.text.count('<tr') == 15
|
2375 |
2406 |
assert '<th class="hour">11 p.m.</th>' in resp.text
|
2376 |
2407 |
|
... | ... | |
2432 |
2463 |
assert 'style="height: 600%; top: 100%;"' in resp.text
|
2433 |
2464 |
|
2434 |
2465 |
|
2435 |
|
def test_agenda_events_month_view(app, admin_user, manager_user, api_user):
|
|
2466 |
def test_agenda_events_month_view(app, admin_user):
|
2436 |
2467 |
agenda = Agenda.objects.create(label='Events', kind='events')
|
|
2468 |
today = datetime.date.today()
|
2437 |
2469 |
|
2438 |
2470 |
login(app)
|
2439 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302)
|
2440 |
|
resp = resp.follow()
|
|
2471 |
resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.pk, today.year, today.month))
|
2441 |
2472 |
assert "This month doesn't have any event configured." in resp.text
|
2442 |
|
today = datetime.date.today()
|
2443 |
2473 |
assert resp.request.url.endswith('%s/%s/' % (today.year, today.month))
|
2444 |
2474 |
|
2445 |
2475 |
# add event in a future month
|
2446 |
|
event = Event(label='xyz', start_datetime=now() + datetime.timedelta(days=40), places=10, agenda=agenda)
|
2447 |
|
event.save()
|
2448 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
2449 |
|
assert 'xyz' in resp.text
|
2450 |
|
day = event.start_datetime
|
2451 |
|
assert resp.request.url.endswith('%s/%s/' % (day.year, day.month))
|
2452 |
|
|
|
2476 |
event = Event.objects.create(
|
|
2477 |
label='xyz', start_datetime=now() + datetime.timedelta(days=40), places=10, agenda=agenda
|
|
2478 |
)
|
2453 |
2479 |
with CaptureQueriesContext(connection) as ctx:
|
2454 |
2480 |
app.get(
|
2455 |
2481 |
'/manage/agendas/%s/%s/%s/' % (agenda.id, event.start_datetime.year, event.start_datetime.month)
|
... | ... | |
2460 |
2486 |
resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.id, today.year, today.month))
|
2461 |
2487 |
assert "This month doesn't have any event configured." in resp.text
|
2462 |
2488 |
|
2463 |
|
# add event in the past
|
2464 |
|
event2 = Event(label='zyx', start_datetime=now() - datetime.timedelta(days=40), places=10, agenda=agenda)
|
2465 |
|
event2.save()
|
2466 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
2467 |
|
assert 'xyz' in resp.text
|
2468 |
|
day = event.start_datetime # still the future event
|
2469 |
|
assert resp.request.url.endswith('%s/%s/' % (day.year, day.month))
|
2470 |
|
|
2471 |
|
# remove future event
|
2472 |
|
event.delete()
|
2473 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
2474 |
|
assert 'zyx' in resp.text
|
2475 |
|
day = event2.start_datetime # now the past event
|
2476 |
|
assert resp.request.url.endswith('%s/%s/' % (day.year, day.month))
|
2477 |
|
|
2478 |
2489 |
|
2479 |
2490 |
def test_agenda_month_view(app, admin_user, manager_user, api_user):
|
2480 |
2491 |
agenda = Agenda.objects.create(label='Passeports', kind='meetings')
|
2481 |
2492 |
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
|
2493 |
today = datetime.date.today()
|
2482 |
2494 |
|
2483 |
2495 |
meetingtype = MeetingType(agenda=agenda, label='passeport', duration=20)
|
2484 |
2496 |
meetingtype.save()
|
2485 |
2497 |
|
2486 |
2498 |
login(app)
|
2487 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302)
|
2488 |
|
resp = resp.follow()
|
|
2499 |
resp = app.get('/manage/agendas/%s/%d/%d/%d/' % (agenda.pk, today.year, today.month, today.day))
|
2489 |
2500 |
assert 'Month view' in resp.text
|
2490 |
2501 |
resp = resp.click('Month view')
|
2491 |
|
today = datetime.date.today()
|
2492 |
2502 |
assert resp.request.url.endswith('%s/%s/' % (today.year, today.month))
|
2493 |
2503 |
|
2494 |
2504 |
assert 'Day view' in resp.text # date view link should be present
|
... | ... | |
2501 |
2511 |
)
|
2502 |
2512 |
timeperiod.save()
|
2503 |
2513 |
resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.id, today.year, today.month))
|
2504 |
|
assert not 'No opening hours this month.' in resp.text
|
2505 |
|
assert not '<div class="booking' in resp.text
|
|
2514 |
assert 'No opening hours this month.' not in resp.text
|
|
2515 |
assert '<div class="booking' not in resp.text
|
2506 |
2516 |
first_month_day = today.replace(day=1)
|
2507 |
2517 |
last_month_day = today.replace(day=1, month=today.month + 1) - datetime.timedelta(days=1)
|
2508 |
2518 |
start_week_number = first_month_day.isocalendar()[1]
|
2509 |
|
-
|