Changeset View
Changeset View
Standalone View
Standalone View
tests/unit/test-003-event.py
Show First 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | |||||
TRANSP:TRANSPARENT | TRANSP:TRANSPARENT | ||||
PRIORITY:2 | PRIORITY:2 | ||||
SEQUENCE:3 | SEQUENCE:3 | ||||
STATUS:CANCELLED | STATUS:CANCELLED | ||||
ORGANIZER;CN=Doe\, John:mailto:john.doe@example.org | ORGANIZER;CN=Doe\, John:mailto:john.doe@example.org | ||||
END:VEVENT | END:VEVENT | ||||
""" | """ | ||||
ical_event_rdate = """ | |||||
BEGIN:VEVENT | |||||
UID:7a35527d-f783-4b58-b404-b1389bd2fc57 | |||||
DTSTAMP;VALUE=DATE-TIME:20140407T122311Z | |||||
CREATED;VALUE=DATE-TIME:20140407T122245Z | |||||
LAST-MODIFIED;VALUE=DATE-TIME:20140407T122311Z | |||||
DTSTART;TZID=Europe/Zurich;VALUE=DATE-TIME:20140523T110000 | |||||
DURATION:PT1H30M0S | |||||
RDATE;TZID=Europe/Zurich;VALUE=DATE-TIME:20140530T110000 | |||||
RDATE;TZID=Europe/Zurich;VALUE=DATE-TIME:20140620T110000 | |||||
SUMMARY:Summary | |||||
LOCATION:Location | |||||
DESCRIPTION:Description | |||||
SEQUENCE:2 | |||||
CLASS:PUBLIC | |||||
ORGANIZER;CN=Doe\, John:mailto:john.doe@example.org | |||||
END:VEVENT | |||||
""" | |||||
xml_event = """ | xml_event = """ | ||||
<icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> | <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0"> | ||||
<vcalendar> | <vcalendar> | ||||
<properties> | <properties> | ||||
<prodid> | <prodid> | ||||
<text>Libkolabxml-1.1</text> | <text>Libkolabxml-1.1</text> | ||||
</prodid> | </prodid> | ||||
<version> | <version> | ||||
▲ Show 20 Lines • Show All 856 Lines • ▼ Show 20 Lines | def test_027_merge_attendee_data(self): | ||||
# test write + read | # test write + read | ||||
event = event_from_string(str(event)) | event = event_from_string(str(event)) | ||||
exception = event.get_exceptions()[0] | exception = event.get_exceptions()[0] | ||||
self.assertEqual(len(exception.get_attendees()), 2) | self.assertEqual(len(exception.get_attendees()), 2) | ||||
self.assertEqual(event.get_attendee("jane@example.org").get_participant_status(), kolabformat.PartTentative) | self.assertEqual(event.get_attendee("jane@example.org").get_participant_status(), kolabformat.PartTentative) | ||||
self.assertEqual(event.get_attendee("jack@example.org").get_name(), "Jack") | self.assertEqual(event.get_attendee("jack@example.org").get_name(), "Jack") | ||||
self.assertRaises(ValueError, exception.get_attendee, "somebody@else.com") # not addded to exception | self.assertRaises(ValueError, exception.get_attendee, "somebody@else.com") # not addded to exception | ||||
def test_028_rdate(self): | |||||
event = event_from_ical(ical_event_rdate) | |||||
self.assertTrue(event.is_recurring()) | |||||
self.assertEqual(len(event.get_recurrence_dates()), 2) | |||||
self.assertIsInstance(event.get_recurrence_dates()[0], datetime.datetime) | |||||
rdates = event.get_recurrence_dates() | |||||
self.assertEqual(str(rdates[0]), "2014-05-30 11:00:00+02:00") | |||||
self.assertEqual(str(rdates[1]), "2014-06-20 11:00:00+02:00") | |||||
dt = datetime.datetime(2014, 8, 15, 10, 0, 0, tzinfo=pytz.timezone("Europe/Zurich")) | |||||
event.add_recurrence_date(dt) | |||||
rdates = event.get_recurrence_dates() | |||||
self.assertEqual(str(rdates[2]), "2014-08-15 10:00:00+02:00") | |||||
itip = event.as_string_itip() | |||||
rdates = [] | |||||
for line in itip.split("\n"): | |||||
if re.match('^RDATE', line): | |||||
rdates.append(line.strip().split(':')[1]) | |||||
self.assertEqual("TZID=Europe/Zurich", line.split(':')[0].split(';')[1]) | |||||
self.assertEqual(rdates, ["20140530T110000", "20140620T110000", "20140815T100000"]) | |||||
def _find_prop_in_list(self, diff, name): | def _find_prop_in_list(self, diff, name): | ||||
for prop in diff: | for prop in diff: | ||||
if prop['property'] == name: | if prop['property'] == name: | ||||
return prop | return prop | ||||
return None | return None | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
unittest.main() | unittest.main() |