Beispiel #1
0
def test_iter_start_time_invalid():
    invalid_frequency = -1
    with pytest.raises(IndicoError):
        ReservationOccurrence.iter_start_time(start=date.today(),
                                              end=date.today(),
                                              repetition=(invalid_frequency,
                                                          0))
def test_iter_start_time_monthly(interval, days_elapsed, expected_length):
    assert days_elapsed >= 0
    params = {'start': date.today() + relativedelta(hour=8),
              'end': date.today() + relativedelta(days=days_elapsed, hour=17),
              'repetition': (RepeatFrequency.MONTH, interval)}
    if expected_length is None:
        with pytest.raises(IndicoError):
            ReservationOccurrence.iter_start_time(**params)
    else:
        days = list(ReservationOccurrence.iter_start_time(**params))
        weekday = params['start'].weekday()
        assert len(days) == expected_length
        assert all(day.weekday() == weekday for day in days)
def test_iter_start_time_weekly(interval, days_elapsed, expected_length):
    assert days_elapsed >= 0
    params = {'start': date.today() + relativedelta(hour=8),
              'end': date.today() + relativedelta(days=days_elapsed, hour=17),
              'repetition': (RepeatFrequency.WEEK, interval)}
    if expected_length is None:
        with pytest.raises(IndicoError):
            ReservationOccurrence.iter_start_time(**params)
    else:
        days = list(ReservationOccurrence.iter_start_time(**params))
        assert len(days) == expected_length
        for i, day in enumerate(days):
            assert day.date() == date.today() + relativedelta(weeks=i * interval)
def test_iter_start_time_monthly(interval, days_elapsed, expected_length):
    assert days_elapsed >= 0
    params = {'start': date.today() + relativedelta(hour=8),
              'end': date.today() + relativedelta(days=days_elapsed, hour=17),
              'repetition': (RepeatFrequency.MONTH, interval)}
    if expected_length is None:
        with pytest.raises(IndicoError):
            ReservationOccurrence.iter_start_time(**params)
    else:
        days = list(ReservationOccurrence.iter_start_time(**params))
        weekday = params['start'].weekday()
        assert len(days) == expected_length
        assert all(day.weekday() == weekday for day in days)
def test_iter_start_time_weekly(interval, days_elapsed, expected_length):
    assert days_elapsed >= 0
    params = {'start': date.today() + relativedelta(hour=8),
              'end': date.today() + relativedelta(days=days_elapsed, hour=17),
              'repetition': (RepeatFrequency.WEEK, interval)}
    if expected_length is None:
        with pytest.raises(IndicoError):
            ReservationOccurrence.iter_start_time(**params)
    else:
        days = list(ReservationOccurrence.iter_start_time(**params))
        assert len(days) == expected_length
        for i, day in enumerate(days):
            assert day.date() == date.today() + relativedelta(weeks=i * interval)
def test_iter_start_time_daily(interval, days_elapsed, expected_length):
    assert days_elapsed >= 0
    params = {
        "start": date.today() + relativedelta(hour=8),
        "end": date.today() + relativedelta(days=days_elapsed, hour=17),
        "repetition": (RepeatFrequency.DAY, interval),
    }
    if expected_length is None:
        with pytest.raises(IndicoError):
            ReservationOccurrence.iter_start_time(**params)
    else:
        days = list(ReservationOccurrence.iter_start_time(**params))
        assert len(days) == expected_length
        for i, day in enumerate(days):
            assert day.date() == date.today() + relativedelta(days=i)
Beispiel #7
0
 def _get_date_range(self, filters):
     try:
         start_dt, end_dt = filters['start_dt'], filters['end_dt']
         repetition = filters['repeat_frequency'], filters['repeat_interval']
     except KeyError:
         return None
     return [dt.date().isoformat() for dt in ReservationOccurrence.iter_start_time(start_dt, end_dt, repetition)]
Beispiel #8
0
def test_iter_start_time_single(interval):
    days = list(
        ReservationOccurrence.iter_start_time(
            start=date.today() + relativedelta(hour=8),
            end=date.today() + relativedelta(hour=17),
            repetition=(RepeatFrequency.NEVER, interval)))
    assert len(days) == 1
Beispiel #9
0
 def _get_date_range(self, filters):
     try:
         start_dt, end_dt = filters['start_dt'], filters['end_dt']
         repetition = filters['repeat_frequency'], filters['repeat_interval']
     except KeyError:
         return None
     return [dt.date().isoformat() for dt in ReservationOccurrence.iter_start_time(start_dt, end_dt, repetition)]
Beispiel #10
0
 def iter_days(self):
     if self.repeat_frequency is None and self.repeat_interval is None:
         for dt in iterdays(self.start_dt, self.end_dt):
             yield dt.date()
     else:
         for dt in ReservationOccurrence.iter_start_time(self.start_dt, self.end_dt,
                                                         (self.repeat_frequency, self.repeat_interval)):
             for offset in xrange(-self.flexible_days, self.flexible_days + 1):
                 yield (dt + timedelta(days=offset)).date()
Beispiel #11
0
 def iter_days(self):
     if self.repeat_frequency is None and self.repeat_interval is None:
         for dt in iterdays(self.start_dt, self.end_dt):
             yield dt.date()
     else:
         for dt in ReservationOccurrence.iter_start_time(self.start_dt, self.end_dt,
                                                         (self.repeat_frequency, self.repeat_interval)):
             for offset in xrange(-self.flexible_days, self.flexible_days + 1):
                 yield (dt + timedelta(days=offset)).date()
def test_iter_start_time_single(interval):
    days = list(
        ReservationOccurrence.iter_start_time(
            start=date.today() + relativedelta(hour=8),
            end=date.today() + relativedelta(hour=17),
            repetition=(RepeatFrequency.NEVER, interval),
        )
    )
    assert len(days) == 1
def test_iter_start_time_monthly_5th_monday_is_always_last():
    start_dt = date(2014, 9, 29) + relativedelta(hour=8)  # 5th monday of september
    end_dt = start_dt + relativedelta(days=100, hour=17)
    params = {'start': start_dt, 'end': end_dt, 'repetition': (RepeatFrequency.MONTH, 1)}

    days = list(ReservationOccurrence.iter_start_time(**params))
    assert len(days) == 4
    assert days[1].date() == date(2014, 10, 27)  # 4th monday of october
    assert days[2].date() == date(2014, 11, 24)  # 4th monday of october
    assert days[3].date() == date(2014, 12, 29)  # 5th monday of october
def test_iter_start_time_monthly_5th_monday_is_always_last():
    start_dt = date(2014, 9, 29) + relativedelta(hour=8)  # 5th monday of september
    end_dt = start_dt + relativedelta(days=100, hour=17)
    params = {'start': start_dt, 'end': end_dt, 'repetition': (RepeatFrequency.MONTH, 1)}

    days = list(ReservationOccurrence.iter_start_time(**params))
    assert len(days) == 4
    assert days[1].date() == date(2014, 10, 27)  # 4th monday of october
    assert days[2].date() == date(2014, 11, 24)  # 4th monday of october
    assert days[3].date() == date(2014, 12, 29)  # 5th monday of october
def test_iter_start_time_invalid():
    invalid_frequency = -1
    assert invalid_frequency not in RepeatFrequency
    with pytest.raises(IndicoError):
        ReservationOccurrence.iter_start_time(start=date.today(), end=date.today(), repetition=(invalid_frequency, 0))