예제 #1
0
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',
    ])