Exemplo n.º 1
0
    def test_DailyEveryDayOnThatDay(self):
        ri = RepetitionIntervalClass("DAILY:03:15:+++++++:Europe/London")
        self.checkNextRun(
            ri,
            pytz.timezone('UTC').localize(
                datetime.datetime(2018, 10, 29, 0, 30, 0, 0)),
            pytz.timezone('Europe/London').localize(
                datetime.datetime(2018, 10, 29, 15, 3, 0, 0)))

        #6 may 2018 is a sunday. Check at 4 o'clock for next 3 weeks we have correct next runs (always the next day)
        #  3 weeks won't go over month boundary
        days_of_week = ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
        cur_day_of_week = 6
        for DayOfMonthBeforeRunIsDue in range(6, 6 + (3 * 7)):
            #cur_day_of_week = cur_day_of_week+1
            if cur_day_of_week > 6:
                cur_day_of_week = 0
            print(DayOfMonthBeforeRunIsDue)
            self.checkNextRun(
                ri,
                pytz.timezone('UTC').localize(
                    datetime.datetime(2018, 5, DayOfMonthBeforeRunIsDue, 16,
                                      30, 0, 0)),
                pytz.timezone('Europe/London').localize(
                    datetime.datetime(2018, 5, (DayOfMonthBeforeRunIsDue + 1),
                                      15, 3, 0, 0)),
                'Test was for ' + days_of_week[cur_day_of_week])
        self.assertEqual(ri.__str__(), 'DAILY:03:15:+++++++:Europe/London')
Exemplo n.º 2
0
 def test_MonthlyDayBefore(self):
   ri = RepetitionIntervalClass("MONTHLY:03:15:11:Europe/London")
   self.checkNextRun(ri,
     pytz.timezone('UTC').localize(datetime.datetime(2018,10,10,16,30,0,0)),
     pytz.timezone('Europe/London').localize(datetime.datetime(2018,10,11,15,3,0,0))
   )
   self.assertEqual(ri.__str__(),'MONTHLY:03:15:11:Europe/London')
Exemplo n.º 3
0
 def test_monthlyFourTimesPerMonthWrongOrder(self):
     ri = RepetitionIntervalClass(
         "MONTHLY:02:15:3,10,000005,15:Europe/London")
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 1, 13, 0, 1, 0)),
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 3, 15, 2, 0, 0)))
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 3, 17, 0, 1, 0)),
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 5, 15, 2, 0, 0)))
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 5, 17, 0, 1, 0)),
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 10, 15, 2, 0, 0)))
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 10, 17, 0, 1, 0)),
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 15, 15, 2, 0, 0)))
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 15, 17, 0, 1, 0)),
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 2, 3, 15, 2, 0, 0)))
     self.assertEqual(ri.__str__(),
                      'MONTHLY:02:15:03,05,10,15:Europe/London')
Exemplo n.º 4
0
 def test_hourlyFourTimesPerHourWrongOrder(self):
     ri = RepetitionIntervalClass("HOURLY:0,30,15,45")
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 13, 0, 1, 0)),
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 13, 15, 0, 0)))
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 13, 16, 1, 0)),
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 13, 30, 0, 0)))
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 13, 31, 1, 0)),
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 13, 45, 0, 0)))
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 13, 46, 1, 0)),
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 14, 0, 0, 0)))
     self.assertEqual(ri.__str__(), 'HOURLY:00,15,30,45')
Exemplo n.º 5
0
 def test_hourlyDoubleZeroMinute(self):
   ri = RepetitionIntervalClass("HOURLY:00")
   self.checkNextRun(ri,
     pytz.timezone('UTC').localize(datetime.datetime(2016,1,14,23,3,1,0)),
     pytz.timezone('UTC').localize(datetime.datetime(2016,1,15,00,0,0,0))
   )
   self.assertEqual(ri.__str__(),'HOURLY:00')
Exemplo n.º 6
0
 def test_PassedInDatetimeMustBeUTC(self):
     ri = RepetitionIntervalClass("SETHOUR:03:1,2,3:UTC")
     with self.assertRaises(Exception) as context:
         nextRun = ri.getNextOccuranceDatetime(
             datetime.datetime(2016, 1, 5, 14, 2, 59, 0,
                               pytz.timezone('Europe/London')))
     self.checkGotRightException(context,
                                 curDateTimeTimezoneNotUTCException)
Exemplo n.º 7
0
 def test_nextdateHourlyModeJustBeforeMinute(self):
   ri = RepetitionIntervalClass("HOURLY:03")
   self.checkNextRun(
     ri,
     pytz.timezone('UTC').localize(datetime.datetime(2016,1,5,14,2,59,0)),
     pytz.timezone('Europe/London').localize(datetime.datetime(2016,1,5,14,3,0,0))
   )
   self.assertEqual(ri.__str__(),'HOURLY:03')
Exemplo n.º 8
0
 def setNextScheduledRun(self, curTime):
   ri = None
   if self.enabled == False:
     self.nextScheduledRun = None
   else:
     if (self.repetitionInterval != None):
       if (self.repetitionInterval != ''):
         ri = RepetitionIntervalClass(self.repetitionInterval)
         self.nextScheduledRun = ri.getNextOccuranceDatetime(curTime).isoformat()
Exemplo n.º 9
0
 def test_HourlyWithMutipleCommasWillError(self):
     with self.assertRaises(Exception) as context:
         ri = RepetitionIntervalClass("HOURLY:0,15,,30,45")
     self.checkGotRightException(context, badParamater)
     with self.assertRaises(Exception) as context2:
         ri = RepetitionIntervalClass("HOURLY:,,")
     self.checkGotRightException(context2, badParamater)
     with self.assertRaises(Exception) as context3:
         ri = RepetitionIntervalClass("HOURLY:,0,15,30,45")
     self.checkGotRightException(context3, badParamater)
     with self.assertRaises(Exception) as context4:
         ri = RepetitionIntervalClass("HOURLY:0,15,30,45,")
     self.checkGotRightException(context4, badParamater)
Exemplo n.º 10
0
 def test_InitValueCheck(self):
     ri = RepetitionIntervalClass("SETHOUR:03:1,2,3:UTC")
     self.assertEqual(ri.mode, ModeType.SETHOUR)
     self.assertEqual(ri.minute, 3)
     self.assertEqual(ri.sethourModeHours, SortedDict({1: 1, 2: 2, 3: 3}))
     self.assertEqual(ri.timezone, pytz.timezone("UTC"))
     self.assertEqual(str(ri), "SETHOUR:03:01,02,03:UTC")
Exemplo n.º 11
0
 def test_RepeatedHoursRemoved(self):
     ri = RepetitionIntervalClass("SETHOUR:03:1,5,3,1,1,1,3,5:UTC")
     self.assertEqual(ri.mode, ModeType.SETHOUR)
     self.assertEqual(ri.minute, 3)
     self.assertEqual(ri.sethourModeHours, SortedDict({1: 1, 3: 3, 5: 5}))
     self.assertEqual(ri.timezone, pytz.timezone("UTC"))
     self.assertEqual(str(ri), "SETHOUR:03:01,03,05:UTC")
Exemplo n.º 12
0
 def test_nextdateHourlyModeLastMinuteDayBefore(self):
     ri = RepetitionIntervalClass("HOURLY:03")
     self.checkNextRun(ri,
                       curTime=pytz.timezone('UTC').localize(
                           datetime.datetime(2016, 1, 14, 23, 3, 1, 0)),
                       expTime=pytz.timezone('Europe/London').localize(
                           datetime.datetime(2016, 1, 15, 00, 3, 0, 0)))
Exemplo n.º 13
0
 def test_HourlyBeforeDSTJumpBack(self):
   #29 oct 2018 2am becomes 1am
   # there won't be a 1:03 so it should jump to 2:03`
   ri = RepetitionIntervalClass("HOURLY:03")
   # the time 1:03 can't be represented in Europe/London as it has two UTC values
   # so the test specifies a UTC time
   self.checkNextRun(ri,pytz.timezone('UTC').localize(datetime.datetime(2018,10,29,0,30,0,0)),pytz.timezone('UTC').localize(datetime.datetime(2018,10,29,1,3,0,0)))
Exemplo n.º 14
0
 def test_MonthlyDayBeforeBST(self):
   ri = RepetitionIntervalClass("MONTHLY:03:15:11:Europe/London")
   # Next run Expected result is in Europe/London
   self.checkNextRun(
     ri,
     pytz.timezone('UTC').localize(datetime.datetime(2018,3,27,16,30,0,0)),
     pytz.timezone('Europe/London').localize(datetime.datetime(2018,4,11,15,3,0,0))
   )
Exemplo n.º 15
0
 def test_MonthlyOnDayTimeBefore(self):
     ri = RepetitionIntervalClass("MONTHLY:03:15:11:Europe/London")
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2018, 10, 11, 10, 30, 0, 0)),
         pytz.timezone('Europe/London').localize(
             datetime.datetime(2018, 10, 11, 15, 3, 0, 0)))
Exemplo n.º 16
0
 def test_DailyEveryDayOnFri(self):
     ri = RepetitionIntervalClass("DAILY:03:15:----+--:Europe/London")
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2018, 10, 29, 16, 30, 0, 0)),
         pytz.timezone('Europe/London').localize(
             datetime.datetime(2018, 11, 2, 15, 3, 0, 0)))
Exemplo n.º 17
0
 def test_HourlyBeforeDSTJumpForward(self):
   #25 mar 2018 1am becomes 2am
   # there won't be a 1:03 so it should jump to 2:03
   ri = RepetitionIntervalClass("HOURLY:03")
   self.checkNextRun(ri,
     pytz.timezone('UTC').localize(datetime.datetime(2018,3,25,0,30,0,0)),
     pytz.timezone('Europe/London').localize(datetime.datetime(2018,3,25,2,3,0,0))
   )
Exemplo n.º 18
0
 def test_twoHourInterval_middletime_shouldPushForwardToNextHour(self):
     ri = RepetitionIntervalClass("SETHOUR:03:15,18:UTC")
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 16, 3, 0, 0)),
         pytz.timezone('Europe/London').localize(
             datetime.datetime(2016, 1, 14, 18, 3, 0, 0)))
Exemplo n.º 19
0
 def test_MonthlyYearRollover(self):
     ri = RepetitionIntervalClass("MONTHLY:03:15:11:Europe/London")
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2018, 12, 12, 16, 30, 0, 0)),
         pytz.timezone('Europe/London').localize(
             datetime.datetime(2019, 1, 11, 15, 3, 0, 0)))
Exemplo n.º 20
0
 def test_nextdateHourlyModeJustAfterMinute(self):
     ri = RepetitionIntervalClass("HOURLY:03")
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 14, 3, 1, 0)),
         pytz.timezone('Europe/London').localize(
             datetime.datetime(2016, 1, 14, 15, 3, 0, 0)))
Exemplo n.º 21
0
 def test_twoHourInterval_startingbeforehour_shouldPushForwardSameDay(self):
     ri = RepetitionIntervalClass("SETHOUR:03:15,18:UTC")
     self.checkNextRun(
         ri,
         pytz.timezone('UTC').localize(
             datetime.datetime(2016, 1, 14, 14, 3, 0, 0)),
         pytz.timezone('Europe/London').localize(
             datetime.datetime(2016, 1, 14, 15, 3, 0, 0)))
Exemplo n.º 22
0
 def assertValidRepetitionInterval(ri, enabled):
   if ri is None:
     ri = ''
   if ri == '':
     if enabled:
       raise BadRequest('Repetition interval not set but enabled is true')
     return None
   try:
     return RepetitionIntervalClass(ri)
   except:
     raise BadRequest('Invalid Repetition Interval')
Exemplo n.º 23
0
 def test_initDaily(self):
     a = RepetitionIntervalClass("DAILY:1:11:+++++--:UTC")
Exemplo n.º 24
0
 def test_initDailyWithInvalidTimezone(self):
     with self.assertRaises(Exception) as context:
         a = RepetitionIntervalClass("DAILY:1:11:+++++--:dfsf")
     self.checkGotRightException(context, unknownTimezone)
Exemplo n.º 25
0
 def test_PassedInDatetimeMustHaveTimezoneType(self):
     with self.assertRaises(Exception) as context:
         ri = RepetitionIntervalClass("SETHOUR:03:1:")
     self.checkGotRightException(context, unknownTimezone)
Exemplo n.º 26
0
 def test_PassedInDatetimeMustHaveHours(self):
     with self.assertRaises(Exception) as context:
         ri = RepetitionIntervalClass("SETHOUR:03::UTC")
     self.checkGotRightException(context, badParamater)
Exemplo n.º 27
0
 def test_WrongNumberOfParams(self):
     with self.assertRaises(Exception) as context:
         ri = RepetitionIntervalClass("SETHOUR:03:1,2,3:UTC:A:B:C")
     self.checkGotRightException(context, badNumberOfModeParamaters)
Exemplo n.º 28
0
 def test_initDailyWithNoDaysErrors(self):
     with self.assertRaises(Exception) as context:
         a = RepetitionIntervalClass("DAILY:1:11:-------:UTC")
     self.checkGotRightException(context, badParamater)
Exemplo n.º 29
0
 def test_initDailyWithNoneTimezoneErrors(self):
     with self.assertRaises(Exception) as context:
         a = RepetitionIntervalClass("DAILY:1:11:+++++++:None")
     self.checkGotRightException(context, unknownTimezone)
Exemplo n.º 30
0
 def test_initDailyWithInvalidChar(self):
     with self.assertRaises(Exception) as context:
         a = RepetitionIntervalClass("DAILY:1:11:+++++XX:UTC")
     self.checkGotRightException(context, badParamater)