def test_events_listing_ical(self): # Default mode is to show all events from now on. headers, output, request = make_fake_response(self.request) view = self.portal.restrictedTraverse('@@event_listing_ical') view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) self.assertTrue('Long Event' in icalstr)
def test_events_listing_ical(self): # Default mode is to show all events from now on. headers, output, request = make_fake_response(self.request) view = self._listing_view(name="@@event_listing_ical") view() self.assertEqual(len(headers), 2) self.assertEqual(headers["Content-Type"], "text/calendar") icalstr = "".join(output) self.assertTrue("Long Event" in icalstr)
def test_collection_ical(self): """Test basic icalendar export from ATTopics. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal.collection, request), name="ics_view") view() self.assertEqual(len(headers), 2) self.assertEqual(headers["Content-Type"], "text/calendar") icalstr = "".join(output) self.assertEqual(icalstr.count("BEGIN:VEVENT"), 4)
def test_events_listing_ical(self): # Default mode is to show all events from now on. headers, output, request = make_fake_response(self.request) view = self._listing_view(name='@@event_listing_ical') view() self.assertEqual(len(headers), 3) self.assertEqual(headers['Content-Type'], 'text/calendar') self.assertTrue('Content-Length' in headers) icalstr = b''.join(output) self.assertTrue(b'Long Event' in icalstr)
def test_collection_ical(self): """Test basic icalendar export from ATTopics. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal.collection, request), name='ics_view') view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4)
def test_collection_ical(self): """Test basic icalendar export from Collections. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter( (self.portal.collection, request), name='ics_view' ) view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4)
def test_event_occurrence_ical(self): """A event occurrence should not conain recurrence definitions from it's parent. """ headers, output, request = make_fake_response(self.request) occ = self.traverser(self.now_event, request).publishTraverse(request, "2013-05-07") view = getMultiAdapter((occ, request), name="ics_view") view() self.assertEqual(len(headers), 2) self.assertEqual(headers["Content-Type"], "text/calendar") icalstr = "".join(output) self.assertTrue("Now Event" in icalstr) self.assertTrue("RRULE" not in icalstr)
def test_collection_ical(self): """Test basic icalendar export from Collections. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal.collection, request), name='ics_view') view() self.assertEqual(len(headers), 3) self.assertEqual(headers['Content-Type'], 'text/calendar') self.assertTrue('Content-Length' in headers) if six.PY3: output = [i.decode('utf8') for i in output] icalstr = ''.join(output) self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4)
def test_event_listing_ical_portal(self): """Test event_listing ical export. It should contain all events from the listing, except Occurrences. For occurrences, their original events are exported. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal, request), name="event_listing_ical") view.mode = "all" view() self.assertEqual(len(headers), 2) self.assertEqual(headers["Content-Type"], "text/calendar") icalstr = "".join(output) # No occurrences in export. Otherwise count would be 8. self.assertEqual(icalstr.count("BEGIN:VEVENT"), 4)
def test_event_occurrence_ical(self): """A event occurrence should not conain recurrence definitions from it's parent. """ headers, output, request = make_fake_response(self.request) occ = self.traverser(self.now_event, request).publishTraverse(request, '2013-05-07') view = getMultiAdapter((occ, request), name='ics_view') view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) self.assertTrue('Now Event' in icalstr) self.assertTrue('RRULE' not in icalstr)
def test_event_occurrence_ical(self): """A event occurrence should not conain recurrence definitions from it's parent. """ headers, output, request = make_fake_response(self.request) occ = self.traverser(self.now_event, request).publishTraverse( request, '2013-05-07' ) view = getMultiAdapter((occ, request), name='ics_view') view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) self.assertTrue('Now Event' in icalstr) self.assertTrue('RRULE' not in icalstr)
def test_event_listing_ical_portal(self): """Test event_listing ical export. It should contain all events from the listing, except Occurrences. For occurrences, their original events are exported. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal, request), name='event_listing_ical') view.mode = 'all' view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) # No occurrences in export. Otherwise count would be 8. self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4)
def test_event_listing_ical_portal__specific_date(self): """Test event_listing ical export for a specific date. The date is when a occurrence happens. It shouldn't contain the occurrence but the original event and the long lasting event. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal, request), name="event_listing_ical") view.mode = "day" view._date = "2013-04-27" view() self.assertEqual(len(headers), 2) self.assertEqual(headers["Content-Type"], "text/calendar") icalstr = "".join(output) self.assertEqual(icalstr.count("BEGIN:VEVENT"), 2) self.assertTrue("Past Event" in icalstr) self.assertTrue("Long Event" in icalstr)
def test_collection_ical(self): """Test basic icalendar export from Collections. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter( (self.portal.collection, request), name='ics_view' ) view() self.assertEqual(len(headers), 3) self.assertEqual(headers['Content-Type'], 'text/calendar') self.assertTrue('Content-Length' in headers) if six.PY3: output = [i.decode('utf8') for i in output] icalstr = ''.join(output) self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4)
def test_event_ical(self): headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.now_event, request), name="ics_view") view() self.assertEqual(len(headers), 2) self.assertEqual(headers["Content-Type"], "text/calendar") icalstr = "".join(output) self.checkOrder( icalstr, "BEGIN:VCALENDAR", "VERSION:2.0", "PRODID:-//Plone.org//NONSGML plone.app.event//EN", "X-WR-CALNAME:Now Event", # calendar name == event title "X-WR-RELCALID:", "X-WR-TIMEZONE:Europe/Vienna", "BEGIN:VEVENT", "SUMMARY:Now Event", "DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T100000", "DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T110000", "DTSTAMP;VALUE=DATE-TIME:", "UID:", "RDATE;TZID=Europe/Vienna:20130509T000000", "EXDATE;TZID=Europe/Vienna:20130506T000000,20140404T000000", "CATEGORIES:plone", "CATEGORIES:testing", "CONTACT:Auto Testdriver\\, +123456789\\, [email protected]\\, " "http://plone", # continuation of line above " .org", # line longer than max length spec by icalendar "CREATED;VALUE=DATE-TIME:", "LAST-MODIFIED;VALUE=DATE-TIME:", "LOCATION:Vienna", "RRULE:FREQ=DAILY;COUNT=3;INTERVAL=1", "URL:http://nohost/plone/now", "END:VEVENT", "BEGIN:VTIMEZONE", "TZID:Europe/Vienna", "X-LIC-LOCATION:Europe/Vienna", "BEGIN:DAYLIGHT", "DTSTART;VALUE=DATE-TIME:20130331T030000", "TZNAME:CEST", "TZOFFSETFROM:+0100", "TZOFFSETTO:+0200", "END:DAYLIGHT", "END:VTIMEZONE", "END:VCALENDAR", )
def test_event_ical(self): headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.now_event, request), name='ics_view') view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) self.checkOrder( icalstr, 'BEGIN:VCALENDAR', 'VERSION:2.0', 'PRODID:-//Plone.org//NONSGML plone.app.event//EN', 'X-WR-CALNAME:Now Event', # calendar name == event title 'X-WR-RELCALID:', 'X-WR-TIMEZONE:Europe/Vienna', 'BEGIN:VEVENT', 'SUMMARY:Now Event', 'DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T100000', 'DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T110000', 'DTSTAMP;VALUE=DATE-TIME:', 'UID:', 'RDATE;TZID=Europe/Vienna:20130509T000000', 'EXDATE;TZID=Europe/Vienna:20130506T000000,20140404T000000', 'CATEGORIES:plone', 'CATEGORIES:testing', 'CONTACT:Auto Testdriver\\, +123456789\\, [email protected]\\, ' 'http://plone', # continuation of line above ' .org', # line longer than max length spec by icalendar 'CREATED;VALUE=DATE-TIME:', 'LAST-MODIFIED;VALUE=DATE-TIME:', 'LOCATION:Vienna', 'RRULE:FREQ=DAILY;COUNT=3;INTERVAL=1', 'URL:http://nohost/plone/now', 'END:VEVENT', 'BEGIN:VTIMEZONE', 'TZID:Europe/Vienna', 'X-LIC-LOCATION:Europe/Vienna', 'BEGIN:DAYLIGHT', 'DTSTART;VALUE=DATE-TIME:20130331T030000', 'TZNAME:CEST', 'TZOFFSETFROM:+0100', 'TZOFFSETTO:+0200', 'END:DAYLIGHT', 'END:VTIMEZONE', 'END:VCALENDAR')
def test_event_listing_ical_portal__specific_date(self): """Test event_listing ical export for a specific date. The date is when a occurrence happens. It shouldn't contain the occurrence but the original event and the long lasting event. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal, request), name='event_listing_ical') view.mode = 'day' view._date = '2013-04-27' view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) self.assertEqual(icalstr.count('BEGIN:VEVENT'), 2) self.assertTrue('Past Event' in icalstr) self.assertTrue('Long Event' in icalstr)
def test_event_listing_ical_portal__specific_date(self): """Test event_listing ical export for a specific date. The date is when a occurrence happens. It shouldn't contain the occurrence but the original event and the long lasting event. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter( (self.portal, request), name='event_listing_ical' ) view.mode = 'day' view._date = '2013-04-27' view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) self.assertEqual(icalstr.count('BEGIN:VEVENT'), 2) self.assertTrue('Past Event' in icalstr) self.assertTrue('Long Event' in icalstr)
def test_collection_all_ical(self): """Test basic icalendar export from Collections, which returns not only events. """ headers, output, request = make_fake_response(self.request) self.portal.collection.query = [ { 'i': 'portal_type', 'o': 'plone.app.querystring.operation.selection.any', 'v': ['Event', 'plone.app.event.dx.event', 'Page'] }, ] view = getMultiAdapter((self.portal.collection, request), name='ics_view') view() self.assertEqual(len(headers), 4) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4)
def test_event_listing_ical_portal(self): """Test event_listing ical export. It should contain all events from the listing, except Occurrences. For occurrences, their original events are exported. """ headers, output, request = make_fake_response(self.request) view = getMultiAdapter( (self.portal, request), name='event_listing_ical' ) view.mode = 'all' view() self.assertEqual(len(headers), 3) self.assertEqual(headers['Content-Type'], 'text/calendar') self.assertTrue('Content-Length' in headers) if six.PY3: output = [i.decode('utf8') for i in output] icalstr = ''.join(output) # No occurrences in export. Otherwise count would be 8. self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4)
def test_collection_all_ical(self): """Test basic icalendar export from Collections, which returns not only events. """ headers, output, request = make_fake_response(self.request) self.portal.collection.query = [ {'i': 'portal_type', 'o': 'plone.app.querystring.operation.selection.any', 'v': ['Event', 'plone.app.event.dx.event', 'Page'] }, ] view = getMultiAdapter( (self.portal.collection, request), name='ics_view' ) view() self.assertEqual(len(headers), 3) self.assertEqual(headers['Content-Type'], 'text/calendar') self.assertTrue('Content-Length' in headers) if six.PY3: output = [i.decode('utf8') for i in output] icalstr = ''.join(output) self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4)
def test_portal_ical(self): headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal, request), name="ics_view") view() self.assertEqual(len(headers), 2) self.assertEqual(headers["Content-Type"], "text/calendar") icalstr = "".join(output) # No occurrences in export. Otherwise count would be 8. self.assertEqual(icalstr.count("BEGIN:VEVENT"), 4) self.checkOrder( icalstr, "BEGIN:VCALENDAR", "VERSION:2.0", "PRODID:-//Plone.org//NONSGML plone.app.event//EN", "X-WR-CALNAME:Plone site", # calendar name == plone site title "X-WR-TIMEZONE:Europe/Vienna", # whole_day event "BEGIN:VEVENT", "SUMMARY:Past Event", "DTSTART;VALUE=DATE:20130425", "DTEND;VALUE=DATE:20130426", "DTSTAMP;VALUE=DATE-TIME:", "UID:", "CREATED;VALUE=DATE-TIME:", "LAST-MODIFIED;VALUE=DATE-TIME:", "LOCATION:Vienna", "RRULE:FREQ=DAILY;COUNT=3", "URL:http://nohost/plone/past", "END:VEVENT", "BEGIN:VEVENT", "SUMMARY:Long Event", "DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130425T100000", "DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130604T100000", "DTSTAMP;VALUE=DATE-TIME:", "UID:", "CREATED;VALUE=DATE-TIME:", "LAST-MODIFIED;VALUE=DATE-TIME:", "LOCATION:Schaftal", "URL:http://nohost/plone/sub/long", "END:VEVENT", "BEGIN:VEVENT", "SUMMARY:Now Event", "DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T100000", "DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T110000", "DTSTAMP;VALUE=DATE-TIME:", "UID:", "RDATE;TZID=Europe/Vienna:20130509T000000", "EXDATE;TZID=Europe/Vienna:20130506T000000,20140404T000000", "CATEGORIES:plone", "CATEGORIES:testing", "CONTACT:Auto Testdriver\\, +123456789\\, [email protected]\\, " "http://plone", # continuation of line above " .org", "CREATED;VALUE=DATE-TIME:", "LAST-MODIFIED;VALUE=DATE-TIME:", "LOCATION:Vienna", "RRULE:FREQ=DAILY;COUNT=3;INTERVAL=1", "URL:http://nohost/plone/now", "END:VEVENT", "BEGIN:VEVENT", "SUMMARY:Future Event", "DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130515T100000", "DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130515T110000", "DTSTAMP;VALUE=DATE-TIME:", "UID:", "CREATED;VALUE=DATE-TIME:", "LAST-MODIFIED;VALUE=DATE-TIME:", "LOCATION:Graz", "URL:http://nohost/plone/future", "END:VEVENT", "BEGIN:VTIMEZONE", "TZID:Europe/Vienna", "X-LIC-LOCATION:Europe/Vienna", "BEGIN:DAYLIGHT", "DTSTART;VALUE=DATE-TIME:20130331T030000", "TZNAME:CEST", "TZOFFSETFROM:+0100", "TZOFFSETTO:+0200", "END:DAYLIGHT", "END:VTIMEZONE", "END:VCALENDAR", )
def test_portal_ical(self): headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal, request), name='ics_view') view() self.assertEqual(len(headers), 2) self.assertEqual(headers['Content-Type'], 'text/calendar') icalstr = ''.join(output) # No occurrences in export. Otherwise count would be 8. self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4) self.checkOrder( icalstr, 'BEGIN:VCALENDAR', 'VERSION:2.0', 'PRODID:-//Plone.org//NONSGML plone.app.event//EN', 'X-WR-TIMEZONE:Europe/Vienna', # whole_day event 'BEGIN:VEVENT', 'SUMMARY:Past Event', 'DTSTART;VALUE=DATE:20130425', 'DTEND;VALUE=DATE:20130426', 'DTSTAMP;VALUE=DATE-TIME:', 'UID:', 'CREATED;VALUE=DATE-TIME:', 'LAST-MODIFIED;VALUE=DATE-TIME:', 'LOCATION:Vienna', 'RRULE:FREQ=DAILY;COUNT=3', 'URL:http://nohost/plone/past', 'END:VEVENT', 'BEGIN:VEVENT', 'SUMMARY:Long Event', 'DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130425T100000', 'DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130604T100000', 'DTSTAMP;VALUE=DATE-TIME:', 'UID:', 'CREATED;VALUE=DATE-TIME:', 'LAST-MODIFIED;VALUE=DATE-TIME:', 'LOCATION:Schaftal', 'URL:http://nohost/plone/sub/long', 'END:VEVENT', 'BEGIN:VEVENT', 'SUMMARY:Now Event', 'DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T100000', 'DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T110000', 'DTSTAMP;VALUE=DATE-TIME:', 'UID:', 'RDATE;TZID=Europe/Vienna:20130509T000000', 'EXDATE;TZID=Europe/Vienna:20130506T000000,20140404T000000', 'CATEGORIES:plone', 'CATEGORIES:testing', 'CONTACT:Auto Testdriver\\, +123456789\\, [email protected]\\, ' 'http://plone', # continuation of line above ' .org', 'CREATED;VALUE=DATE-TIME:', 'LAST-MODIFIED;VALUE=DATE-TIME:', 'LOCATION:Vienna', 'RRULE:FREQ=DAILY;COUNT=3;INTERVAL=1', 'URL:http://nohost/plone/now', 'END:VEVENT', 'BEGIN:VEVENT', 'SUMMARY:Future Event', 'DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130515T100000', 'DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130515T110000', 'DTSTAMP;VALUE=DATE-TIME:', 'UID:', 'CREATED;VALUE=DATE-TIME:', 'LAST-MODIFIED;VALUE=DATE-TIME:', 'LOCATION:Graz', 'URL:http://nohost/plone/future', 'END:VEVENT', 'BEGIN:VTIMEZONE', 'TZID:Europe/Vienna', 'X-LIC-LOCATION:Europe/Vienna', 'BEGIN:DAYLIGHT', 'DTSTART;VALUE=DATE-TIME:20130331T030000', 'TZNAME:CEST', 'TZOFFSETFROM:+0100', 'TZOFFSETTO:+0200', 'END:DAYLIGHT', 'END:VTIMEZONE', 'END:VCALENDAR')
def test_portal_ical(self): headers, output, request = make_fake_response(self.request) view = getMultiAdapter((self.portal, request), name='ics_view') view() self.assertEqual(len(headers), 3) self.assertEqual(headers['Content-Type'], 'text/calendar') self.assertTrue('Content-Length' in headers) if six.PY3: output = [i.decode('utf8') for i in output] icalstr = ''.join(output) # No occurrences in export. Otherwise count would be 8. self.assertEqual(icalstr.count('BEGIN:VEVENT'), 4) self.checkOrder( icalstr, 'BEGIN:VCALENDAR', 'VERSION:2.0', 'PRODID:-//Plone.org//NONSGML plone.app.event//EN', 'X-WR-TIMEZONE:Europe/Vienna', # whole_day event 'BEGIN:VEVENT', 'SUMMARY:Past Event', 'DTSTART;VALUE=DATE:20130425', 'DTEND;VALUE=DATE:20130426', 'DTSTAMP;VALUE=DATE-TIME:', 'UID:', 'RRULE:FREQ=DAILY;COUNT=3', 'CREATED;VALUE=DATE-TIME:', 'LAST-MODIFIED;VALUE=DATE-TIME:', 'LOCATION:Vienna', 'URL:http://nohost/plone/past', 'END:VEVENT', 'BEGIN:VEVENT', 'SUMMARY:Long Event', 'DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130425T100000', 'DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130604T100000', 'DTSTAMP;VALUE=DATE-TIME:', 'UID:', 'CREATED;VALUE=DATE-TIME:', 'LAST-MODIFIED;VALUE=DATE-TIME:', 'LOCATION:Schaftal', 'URL:http://nohost/plone/sub/long', 'END:VEVENT', 'BEGIN:VEVENT', 'SUMMARY:Now Event', 'DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T100000', 'DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130505T110000', 'DTSTAMP;VALUE=DATE-TIME:', 'UID:', 'RRULE:FREQ=DAILY;COUNT=3;INTERVAL=1', 'RDATE;TZID=Europe/Vienna:20130509T000000', 'EXDATE;TZID=Europe/Vienna:20130506T000000,20140404T000000', 'CATEGORIES:plone,testing', 'CONTACT:Auto Testdriver\\, +123456789\\, [email protected]\\, http://plone', # noqa ' .org', 'CREATED;VALUE=DATE-TIME:', 'LAST-MODIFIED;VALUE=DATE-TIME:', 'LOCATION:Vienna', 'URL:http://nohost/plone/now', 'END:VEVENT', 'BEGIN:VEVENT', 'SUMMARY:Future Event', 'DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20130515T100000', 'DTEND;TZID=Europe/Vienna;VALUE=DATE-TIME:20130515T110000', 'DTSTAMP;VALUE=DATE-TIME:', 'UID:', 'CREATED;VALUE=DATE-TIME:', 'LAST-MODIFIED;VALUE=DATE-TIME:', 'LOCATION:Graz', 'URL:http://nohost/plone/future', 'END:VEVENT', 'BEGIN:VTIMEZONE', 'TZID:Europe/Vienna', 'X-LIC-LOCATION:Europe/Vienna', 'BEGIN:DAYLIGHT', 'DTSTART;VALUE=DATE-TIME:20130331T030000', 'TZNAME:CEST', 'TZOFFSETFROM:+0100', 'TZOFFSETTO:+0200', 'END:DAYLIGHT', 'END:VTIMEZONE', 'END:VCALENDAR')