def testRecurrenceEventsHourly(self):
        # create an hourly recurring event, starting 1 hour and 58 minutes ago,
        # and lasting an hour
        now = _now()
        now = now.replace(microsecond=0)
        start = now - timedelta(minutes=118)
        end = now - timedelta(minutes=58)
        rrules = ["FREQ=HOURLY;WKST=MO", ]
        self.debug('now is %s', str(now))
        self.debug('rrule starts at %s', str(start))

        cal = Calendar()
        cal.addEvent(Event('uid', start, end, "event1",
            rrules=rrules))

        # check active instances now
        eis = cal.getActiveEventInstances()
        self.assertEquals(len(eis), 1)

        self.assertEventAttribsEqual(eis[0].event, start, end,
                                     "event1", rrules, None)
        self.assertEquals(eis[0].start, now - timedelta(hours=1) +
                          timedelta(minutes=2))
        self.assertEquals(eis[0].end, now + timedelta(minutes=2))

        # check active instances 1 hour later
        eis = cal.getActiveEventInstances(now + timedelta(hours=1))
        self.assertEquals(len(eis), 1)

        self.assertEventAttribsEqual(eis[0].event, start, end,
                                     "event1", rrules, None)
        self.assertEquals(eis[0].start, now + timedelta(minutes=2))
        self.assertEquals(eis[0].end, now + timedelta(minutes=2) +
                          timedelta(hours=1))
    def testRecurrenceEventsOverMidnight(self):
        """
        Test weekly recurrence rules that starts on one day and spawns to
        the day after, even though they were not planned for the next day.
        """

        def yesterdayDayOfTheWeek(now):
            yesterday = now - timedelta(days=1)
            day = calendar.weekday(yesterday.year, yesterday.month,
                                   yesterday.day)
            return _dayOfTheWeek[day]

        now = _now().replace(microsecond=0)
        start = now - timedelta(days=1) - timedelta(weeks=1)
        end = now + timedelta(hours=1) - timedelta(weeks=1)
        rrules = [
            "FREQ=WEEKLY;BYDAY=" + yesterdayDayOfTheWeek(now) + ";WKST=MO",
        ]
        cal = Calendar()
        cal.addEvent(Event('uid', start, end, 'content', rrules=rrules))

        eis = cal.getActiveEventInstances()
        self.assertEquals(len(eis), 1)
        self.assertEventAttribsEqual(eis[0].event, start, end, 'content',
                                     rrules, None)
    def testRecurrenceEventsHourly(self):
        # create an hourly recurring event, starting 1 hour and 58 minutes ago,
        # and lasting an hour
        now = _now()
        now = now.replace(microsecond=0)
        start = now - timedelta(minutes=118)
        end = now - timedelta(minutes=58)
        rrules = [
            "FREQ=HOURLY;WKST=MO",
        ]
        self.debug('now is %s', str(now))
        self.debug('rrule starts at %s', str(start))

        cal = Calendar()
        cal.addEvent(Event('uid', start, end, "event1", rrules=rrules))

        # check active instances now
        eis = cal.getActiveEventInstances()
        self.assertEquals(len(eis), 1)

        self.assertEventAttribsEqual(eis[0].event, start, end, "event1",
                                     rrules, None)
        self.assertEquals(eis[0].start,
                          now - timedelta(hours=1) + timedelta(minutes=2))
        self.assertEquals(eis[0].end, now + timedelta(minutes=2))

        # check active instances 1 hour later
        eis = cal.getActiveEventInstances(now + timedelta(hours=1))
        self.assertEquals(len(eis), 1)

        self.assertEventAttribsEqual(eis[0].event, start, end, "event1",
                                     rrules, None)
        self.assertEquals(eis[0].start, now + timedelta(minutes=2))
        self.assertEquals(eis[0].end,
                          now + timedelta(minutes=2) + timedelta(hours=1))
    def testRecurrenceEventsDaily(self):
        # create a daily recurring event, starting 1 hour ago,
        # and lasting two hours
        now = _now()
        now = now.replace(microsecond=0)
        start = now - timedelta(hours=1)
        end = now + timedelta(hours=1)
        rrules = ["FREQ=DAILY;WKST=MO"]

        self.debug("now is %s", str(now))
        self.debug("rrule starts at %s", str(start))

        cal = Calendar()
        cal.addEvent(Event("uid", start, end, "event1", rrules=rrules))

        # check active instances now
        eis = cal.getActiveEventInstances()
        self.assertEquals(len(eis), 1)

        self.assertEventAttribsEqual(eis[0].event, start, end, "event1", rrules, None)
        self.assertEquals(eis[0].start, now - timedelta(hours=1))
        self.assertEquals(eis[0].end, now + timedelta(hours=1))

        # check active instances 1 day later
        eis = cal.getActiveEventInstances(now + timedelta(days=1))
        self.assertEquals(len(eis), 1)

        self.assertEventAttribsEqual(eis[0].event, start, end, "event1", rrules, None)
        self.assertEquals(eis[0].start, now + timedelta(hours=23))
        self.assertEquals(eis[0].end, now + timedelta(hours=25))
    def testCurrentEventsDoNotStartLaterThanTomorrow(self):
        now = _now()
        start = now + timedelta(days=2)
        end = now + timedelta(days=3)

        cal = Calendar()
        cal.addEvent(Event('uid', start, end, 'content'))

        self.failIf(cal.getActiveEventInstances())
    def testCurrentEventsDoNotEndBeforeNow(self):
        now = _now()
        start = now - timedelta(hours=2)
        end = now - timedelta(hours=1)

        cal = Calendar()
        cal.addEvent(Event('uid', start, end, 'content'))

        self.failIf(cal.getActiveEventInstances())
    def testCurrentEventsDoNotStartLaterThanTomorrow(self):
        now = _now()
        start = now + timedelta(days=2)
        end = now + timedelta(days=3)

        cal = Calendar()
        cal.addEvent(Event('uid', start, end, 'content'))

        self.failIf(cal.getActiveEventInstances())
    def testCurrentEventsDoNotEndBeforeNow(self):
        now = _now()
        start = now - timedelta(hours=2)
        end = now - timedelta(hours=1)

        cal = Calendar()
        cal.addEvent(Event('uid', start, end, 'content'))

        self.failIf(cal.getActiveEventInstances())
    def testOverMidnight(self):
        now = _now()
        start = now - timedelta(days=1)
        end = now + timedelta(hours=1)
        cal = Calendar()
        cal.addEvent(Event("uid", start, end, "content"))

        eis = cal.getActiveEventInstances()
        self.assertEquals(len(eis), 1)
        self.assertEventAttribsEqual(eis[0].event, start, end, "content", None, None)
Ejemplo n.º 10
0
    def testOverMidnight(self):
        now = _now()
        start = now - timedelta(days=1)
        end = now + timedelta(hours=1)
        cal = Calendar()
        cal.addEvent(Event('uid', start, end, 'content'))

        eis = cal.getActiveEventInstances()
        self.assertEquals(len(eis), 1)
        self.assertEventAttribsEqual(eis[0].event, start, end, 'content', None,
                                     None)
    def testRecurrenceEventsWhereExDateIsNotStartDate(self):
        """
        Recurrence rules that have exceptions.
        """
        now = _now()
        now = now.replace(microsecond=0)  # recurring adjustments lose precision
        start = now - timedelta(minutes=61)
        end = now - timedelta(minutes=1)
        exdates = [start + timedelta(hours=1)]
        rrules = ["FREQ=HOURLY;INTERVAL=1;COUNT=5"]

        cal = Calendar()
        cal.addEvent(Event("uid", start, end, "content", rrules=rrules, exdates=exdates))

        self.failIf(cal.getActiveEventInstances())
Ejemplo n.º 12
0
    def testRecurrenceEventsWhereExDateIsNotStartDate(self):
        """
        Recurrence rules that have exceptions.
        """
        now = _now()
        now = now.replace(
            microsecond=0)  # recurring adjustments lose precision
        start = now - timedelta(minutes=61)
        end = now - timedelta(minutes=1)
        exdates = [start + timedelta(hours=1)]
        rrules = [
            "FREQ=HOURLY;INTERVAL=1;COUNT=5",
        ]

        cal = Calendar()
        cal.addEvent(
            Event('uid', start, end, 'content', rrules=rrules,
                  exdates=exdates))

        self.failIf(cal.getActiveEventInstances())
Ejemplo n.º 13
0
    def testRecurrenceEventsOverMidnight(self):
        """
        Test weekly recurrence rules that starts on one day and spawns to
        the day after, even though they were not planned for the next day.
        """
        def yesterdayDayOfTheWeek(now):
            yesterday = now - timedelta(days=1)
            day = calendar.weekday(yesterday.year, yesterday.month,
                                   yesterday.day)
            return _dayOfTheWeek[day]

        now = _now().replace(microsecond=0)
        start = now - timedelta(days=1) - timedelta(weeks=1)
        end = now + timedelta(hours=1) - timedelta(weeks=1)
        rrules = [
            "FREQ=WEEKLY;BYDAY=" + yesterdayDayOfTheWeek(now) + ";WKST=MO",
        ]
        cal = Calendar()
        cal.addEvent(Event('uid', start, end, 'content', rrules=rrules))

        eis = cal.getActiveEventInstances()
        self.assertEquals(len(eis), 1)
        self.assertEventAttribsEqual(eis[0].event, start, end, 'content',
                                     rrules, None)