def test_as_ical(): url = 'https://example.org/my-event' event = Event( state='initiated', timezone='Europe/Zurich', start=tzdatetime(2008, 2, 7, 10, 15, 'Europe/Zurich'), end=tzdatetime(2008, 2, 7, 16, 00, 'Europe/Zurich'), recurrence='RRULE:FREQ=DAILY;INTERVAL=2;COUNT=5', title='Squirrel Park Visit', content={'description': '<em>Furry</em> things will happen!'}, location='Squirrel Park', tags=['fun', 'animals', 'furry'], meta={'submitter': '*****@*****.**'}, name='event', modified=tzdatetime(2008, 2, 7, 10, 15, 'Europe/Zurich'), ) ical = event.as_ical(url=url).decode().strip().split('\r\n') assert sorted(ical) == sorted([ 'BEGIN:VCALENDAR', 'VERSION:2.0', 'PRODID:-//OneGov//onegov.event//', 'BEGIN:VEVENT', 'SUMMARY:Squirrel Park Visit', 'DTSTART;VALUE=DATE-TIME:20080207T091500Z', 'DTEND;VALUE=DATE-TIME:20080207T150000Z', 'DESCRIPTION:<em>Furry</em> things will happen!', 'LAST-MODIFIED;VALUE=DATE-TIME:20080207T091500Z', 'LOCATION:Squirrel Park', 'RRULE:FREQ=DAILY;COUNT=5;INTERVAL=2', 'URL:https://example.org/my-event', 'END:VEVENT', 'END:VCALENDAR', ]) event.submit() event.publish() occurrence = event.occurrences[0] occurrence.modified = tzdatetime(2008, 2, 7, 10, 15, 'Europe/Zurich') ical = event.occurrences[0].as_ical(url=url).decode().strip().split('\r\n') assert sorted(ical) == sorted([ 'BEGIN:VCALENDAR', 'VERSION:2.0', 'PRODID:-//OneGov//onegov.event//', 'BEGIN:VEVENT', 'SUMMARY:Squirrel Park Visit', 'DTSTART;VALUE=DATE-TIME:20080207T091500Z', 'DTEND;VALUE=DATE-TIME:20080207T150000Z', 'DESCRIPTION:<em>Furry</em> things will happen!', 'LAST-MODIFIED;VALUE=DATE-TIME:20080207T091500Z', 'LOCATION:Squirrel Park', 'URL:https://example.org/my-event', 'END:VEVENT', 'END:VCALENDAR', ])