def testOutlook3(self):
        self.portal.invokeFactory('Folder', id='test_calendar')
        cal = self.portal.test_calendar
        self.file = open(join(_prefix, 'data', 'outlook3.ics'), 'r')
        self.items = fromFile(cal, self.file)
        self.file.close()

        item = self.items[0][1]
        attendees = item.getAttendees()
        self.failUnless(attendees)
        values = (
            '"Sidnei da Silva" <*****@*****.**>',
            '"George Alan Runyan" <*****@*****.**>',
            '"Toby Roberts" <*****@*****.**>',
            '"Andy McKay" <*****@*****.**>')
        for value in values:
            self.failUnless(value in attendees, (value, attendees))

        self.assertEquals(item.Title(), 'Test Event: Weekly Meeting')
        self.assertEquals(item.getLocation(), 'Enfold Systems')
        self.assertEquals(item.Description().strip(), '')
        self.assertEquals(toTime(item.start_date), '15:30:00')
        self.assertEquals(toTime(item.end_date), '16:00:00')
        self.assertEquals(item.start_date,
                          datetime.datetime(2005, 10, 21, 15, 30, tzinfo=tzutc()))
        self.assertEquals(item.end_date,
                          datetime.datetime(2005, 10, 21, 16, 0, tzinfo=tzutc()))
        self.assertEquals(tuple(item.Subject()), ())
    def testOutlook3(self):
        self.portal.invokeFactory('Folder', id='test_calendar')
        cal = self.portal.test_calendar
        self.file = open(join(_prefix, 'data', 'outlook3.ics'), 'r')
        self.items = fromFile(cal, self.file)
        self.file.close()

        item = self.items[0][1]
        attendees = item.getAttendees()
        self.failUnless(attendees)
        values = ('"Sidnei da Silva" <*****@*****.**>',
                  '"George Alan Runyan" <*****@*****.**>',
                  '"Toby Roberts" <*****@*****.**>',
                  '"Andy McKay" <*****@*****.**>')
        for value in values:
            self.failUnless(value in attendees, (value, attendees))

        self.assertEquals(item.Title(), 'Test Event: Weekly Meeting')
        self.assertEquals(item.getLocation(), 'Enfold Systems')
        self.assertEquals(item.Description().strip(), '')
        self.assertEquals(toTime(item.start_date), '15:30:00')
        self.assertEquals(toTime(item.end_date), '16:00:00')
        self.assertEquals(
            item.start_date,
            datetime.datetime(2005, 10, 21, 15, 30, tzinfo=tzutc()))
        self.assertEquals(
            item.end_date,
            datetime.datetime(2005, 10, 21, 16, 0, tzinfo=tzutc()))
        self.assertEquals(tuple(item.Subject()), ())
    def testImport3(self):
        self.file = open(join(_prefix, 'data', 'frisco.ics'), 'r')
        self.items = self.cal.importCalendar(self.file, do_action=True)
        self.file.close()
        result = self.cal.catalog_getevents(year=2004, month=12)
        events = result[6]['eventslist']
        self.assertEquals(len(events), 1)

        # US/Eastern = GMT-6
        self.assertEquals(events[0]['start'], '23:30:00')
        self.assertEquals(events[0]['end'], None)
        self.assertEquals(events[0]['title'], 'Brazilian jazz at Berkeley')

        events = result[7]['eventslist']
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['start'], None)
        self.assertEquals(events[0]['end'], '00:30:00')
        self.assertEquals(events[0]['title'], 'Brazilian jazz at Berkeley')

        item = self.items[0][1]
        self.assertEquals(toTime(item.start_date), '01:30:00')
        self.assertEquals(toTime(item.end_date), '02:30:00')
        self.assertEquals(item.Title(), 'Brazilian jazz at Berkeley')
        self.assertEquals(self.wt.getInfoFor(item, 'review_state'),
                          'published')
        gef = self.cal.getEventsForThisDay
        self.assertEquals(len(gef(DateTime(2004, 12, 6))), 1)
        self.assertEquals(len(gef(DateTime(2004, 12, 7))), 0)
    def _checkTasks(self, cal, result, items):
        events = result[26]['eventslist']
        self.assertEquals(len(events), 1, events)
        self.assertEquals(events[0]['start'], '15:30:00')
        self.assertEquals(events[0]['end'], '22:30:00')
        self.assertEquals(events[0]['title'], 'Formal Languages Exam')

        item = items[0][1]

        # toTime returns UTC time.
        self.assertEquals(toTime(item.start_date), '12:00:00')
        self.assertEquals(toTime(item.end_date), '18:00:00')
        self.assertEquals(item.Title(), 'Send Invoice')
        self.assertEquals(self.wt.getInfoFor(item, 'review_state'), 'private')

        gef = self.cal.getEventsForThisDay
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
        self.wt.doActionFor(item, 'show')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
        self.wt.doActionFor(item, 'submit')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
        self.wt.doActionFor(item, 'publish')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 2)
        self.wt.doActionFor(item, 'retract')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
        self.wt.doActionFor(item, 'hide')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)

        item = items[1][1]

        # toTime returns UTC time.
        self.assertEquals(toTime(item.start_date), '18:30:00')
        self.assertEquals(toTime(item.end_date), '01:30:00')
        self.assertEquals(item.Title(), 'Formal Languages Exam')
        self.assertEquals(self.wt.getInfoFor(item, 'review_state'), 'published')
    def testImport3(self):
        self.file = open(join(_prefix, 'data', 'frisco.ics'), 'r')
        self.items = self.cal.importCalendar(self.file, do_action=True)
        self.file.close()
        result = self.cal.catalog_getevents(year=2004, month=12)
        events = result[6]['eventslist']
        self.assertEquals(len(events), 1)

        # US/Eastern = GMT-6
        self.assertEquals(events[0]['start'], '23:30:00')
        self.assertEquals(events[0]['end'], None)
        self.assertEquals(events[0]['title'], 'Brazilian jazz at Berkeley')

        events = result[7]['eventslist']
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['start'], None)
        self.assertEquals(events[0]['end'], '00:30:00')
        self.assertEquals(events[0]['title'], 'Brazilian jazz at Berkeley')

        item = self.items[0][1]
        self.assertEquals(toTime(item.start_date), '01:30:00')
        self.assertEquals(toTime(item.end_date), '02:30:00')
        self.assertEquals(item.Title(), 'Brazilian jazz at Berkeley')
        self.assertEquals(self.wt.getInfoFor(item, 'review_state'), 'published')
        gef = self.cal.getEventsForThisDay
        self.assertEquals(len(gef(DateTime(2004, 12, 6))), 1)
        self.assertEquals(len(gef(DateTime(2004, 12, 7))), 0)
    def testOutlook1(self):
        self.portal.invokeFactory('Folder', id='test_calendar')
        cal = self.portal.test_calendar
        self.file = open(join(_prefix, 'data', 'outlook1.ics'), 'r')
        self.items = fromFile(cal, self.file)
        self.file.close()

        item = self.items[0][1]
        self.failIf(item.getAttendees())
        self.assertEquals(item.getLocation(), 'Anywhere')
        self.assertEquals(item.Title(), 'Send event to runyaga')
        self.assertEquals(toTime(item.start_date), '08:00:00')
        self.assertEquals(toTime(item.end_date), '08:30:00')
    def testOutlook1(self):
        self.portal.invokeFactory('Folder', id='test_calendar')
        cal = self.portal.test_calendar
        self.file = open(join(_prefix, 'data', 'outlook1.ics'), 'r')
        self.items = fromFile(cal, self.file)
        self.file.close()

        item = self.items[0][1]
        self.failIf(item.getAttendees())
        self.assertEquals(item.getLocation(), 'Anywhere')
        self.assertEquals(item.Title(), 'Send event to runyaga')
        self.assertEquals(toTime(item.start_date), '08:00:00')
        self.assertEquals(toTime(item.end_date), '08:30:00')
    def testSunbird(self):
        self.portal.invokeFactory('Folder', id='test_calendar')
        cal = self.portal.test_calendar
        self.file = open(join(_prefix, 'data', 'sunbird.ics'), 'r')
        self.items = fromFile(cal, self.file)
        self.file.close()

        item = self.items[0][1]
        self.failIf(item.getAttendees())
        self.failIf(item.getLocation())
        self.assertEquals(item.Title(), 'IIS Caching')
        # toTime gives UTC, dates are interpreted as local.
        self.assertEquals(toTime(item.start_date), '19:00:00')
        self.assertEquals(toTime(item.end_date), '19:00:00')
    def testSunbird(self):
        self.portal.invokeFactory('Folder', id='test_calendar')
        cal = self.portal.test_calendar
        self.file = open(join(_prefix, 'data', 'sunbird.ics'), 'r')
        self.items = fromFile(cal, self.file)
        self.file.close()

        item = self.items[0][1]
        self.failIf(item.getAttendees())
        self.failIf(item.getLocation())
        self.assertEquals(item.Title(), 'IIS Caching')
        # toTime gives UTC, dates are interpreted as local.
        self.assertEquals(toTime(item.start_date), '19:00:00')
        self.assertEquals(toTime(item.end_date), '19:00:00')
    def testOutlook2(self):
        self.portal.invokeFactory('Folder', id='test_calendar')
        cal = self.portal.test_calendar
        self.file = open(join(_prefix, 'data', 'outlook2.ics'), 'r')
        self.items = fromFile(cal, self.file)
        self.file.close()

        item = self.items[0][1]
        self.failIf(item.getAttendees())
        self.assertEquals(item.Title(), 'My Subject')
        self.assertEquals(item.getLocation(), 'My Location')
        self.assertEquals(item.Description(), 'This is a note.\n')
        self.assertEquals(toTime(item.start_date), '00:00:00')
        self.assertEquals(toTime(item.end_date), '00:00:00')
        self.assertEquals(item.start_date,
                          datetime.datetime(2004, 4, 27, tzinfo=tzutc()))
        self.assertEquals(item.end_date,
                          datetime.datetime(2004, 4, 28, tzinfo=tzutc()))
        self.assertEquals(tuple(item.Subject()), ('Webrent2', ))
    def testImport2(self):
        self.file = open(join(_prefix, 'data', 'tasks.ics'), 'r')
        self.items = self.cal.importCalendar(self.file, do_action=True)
        self.file.close()
        result = self.cal.catalog_getevents(year=2004, month=4)
        events = result[26]['eventslist']
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['start'], '15:30:00')
        self.assertEquals(events[0]['end'], '22:30:00')
        self.assertEquals(events[0]['title'], 'Formal Languages Exam')
        item = self.items[0][1]

        # toTime gives UTC time, date is in GMT-3
        self.assertEquals(toTime(item.start_date), '12:00:00')
        self.assertEquals(toTime(item.end_date), '18:00:00')
        self.assertEquals(item.Title(), 'Send Invoice')
        self.assertEquals(self.wt.getInfoFor(item, 'review_state'), 'private')
        gef = self.cal.getEventsForThisDay
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
    def testOutlook2(self):
        self.portal.invokeFactory('Folder', id='test_calendar')
        cal = self.portal.test_calendar
        self.file = open(join(_prefix, 'data', 'outlook2.ics'), 'r')
        self.items = fromFile(cal, self.file)
        self.file.close()

        item = self.items[0][1]
        self.failIf(item.getAttendees())
        self.assertEquals(item.Title(), 'My Subject')
        self.assertEquals(item.getLocation(), 'My Location')
        self.assertEquals(item.Description(), 'This is a note.\n')
        self.assertEquals(toTime(item.start_date), '00:00:00')
        self.assertEquals(toTime(item.end_date), '00:00:00')
        self.assertEquals(item.start_date,
                          datetime.datetime(2004, 4, 27, tzinfo=tzutc()))
        self.assertEquals(item.end_date,
                          datetime.datetime(2004, 4, 28, tzinfo=tzutc()))
        self.assertEquals(tuple(item.Subject()), ('Webrent2',))
    def testImport2(self):
        self.file = open(join(_prefix, 'data', 'tasks.ics'), 'r')
        self.items = self.cal.importCalendar(self.file, do_action=True)
        self.file.close()
        result = self.cal.catalog_getevents(year=2004, month=4)
        events = result[26]['eventslist']
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['start'], '15:30:00')
        self.assertEquals(events[0]['end'], '22:30:00')
        self.assertEquals(events[0]['title'], 'Formal Languages Exam')
        item = self.items[0][1]

        # toTime gives UTC time, date is in GMT-3
        self.assertEquals(toTime(item.start_date), '12:00:00')
        self.assertEquals(toTime(item.end_date), '18:00:00')
        self.assertEquals(item.Title(), 'Send Invoice')
        self.assertEquals(self.wt.getInfoFor(item, 'review_state'), 'private')
        gef = self.cal.getEventsForThisDay
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
    def _checkTasks(self, cal, result, items):
        events = result[26]['eventslist']
        self.assertEquals(len(events), 1, events)
        self.assertEquals(events[0]['start'], '15:30:00')
        self.assertEquals(events[0]['end'], '22:30:00')
        self.assertEquals(events[0]['title'], 'Formal Languages Exam')

        item = items[0][1]

        # toTime returns UTC time.
        self.assertEquals(toTime(item.start_date), '12:00:00')
        self.assertEquals(toTime(item.end_date), '18:00:00')
        self.assertEquals(item.Title(), 'Send Invoice')
        self.assertEquals(self.wt.getInfoFor(item, 'review_state'), 'private')

        gef = self.cal.getEventsForThisDay
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
        self.wt.doActionFor(item, 'show')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
        self.wt.doActionFor(item, 'submit')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
        self.wt.doActionFor(item, 'publish')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 2)
        self.wt.doActionFor(item, 'retract')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)
        self.wt.doActionFor(item, 'hide')
        self.assertEquals(len(gef(DateTime(2004, 4, 26))), 1)

        item = items[1][1]

        # toTime returns UTC time.
        self.assertEquals(toTime(item.start_date), '18:30:00')
        self.assertEquals(toTime(item.end_date), '01:30:00')
        self.assertEquals(item.Title(), 'Formal Languages Exam')
        self.assertEquals(self.wt.getInfoFor(item, 'review_state'),
                          'published')