Beispiel #1
0
def test_two_calendars_same_uid(tmpdir):
    dbpath = str(tmpdir) + '/khal.db'
    dba = backend.SQLiteDb('home', dbpath, locale=locale)
    dbb = backend.SQLiteDb('work', dbpath, locale=locale)
    assert dba.list() == []
    assert dbb.list() == []
    dba.update(event_a, href='12345.ics', etag='abcd')
    assert dba.list() == [('12345.ics', 'abcd')]
    assert dbb.list() == []
    dbb.update(event_b, href='12345.ics', etag='abcd')
    assert dba.list() == [('12345.ics', 'abcd')]
    assert dbb.list() == [('12345.ics', 'abcd')]
    events_a = list(
        dba.get_time_range(datetime(2014, 6, 30, 0, 0),
                           datetime(2014, 7, 26, 0, 0)))
    events_b = list(
        dbb.get_time_range(datetime(2014, 6, 30, 0, 0),
                           datetime(2014, 7, 26, 0, 0)))
    assert len(events_a) == 4
    assert len(events_b) == 4
    dba.delete('12345.ics')
    events_a = list(
        dba.get_time_range(datetime(2014, 6, 30, 0, 0),
                           datetime(2014, 7, 26, 0, 0)))
    events_b = list(
        dbb.get_time_range(datetime(2014, 6, 30, 0, 0),
                           datetime(2014, 7, 26, 0, 0)))
    assert len(events_a) == 0
    assert len(events_b) == 4
    assert dba.list() == []
    assert dbb.list() == [('12345.ics', 'abcd')]
Beispiel #2
0
def test_event_recuid_rrule_no_master():
    """
    test for events which have a RECUID and a RRULE component, but the master event is
    not present in the same file
    """
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    dbi.update(
        _get_text('event_dt_multi_recuid_no_master'),
        href='12345.ics',
        etag='abcd',
        calendar=calname,
    )
    events = dbi.get_floating(
        dt.datetime(2010, 1, 1, 0, 0),
        dt.datetime(2020, 1, 1, 0, 0),
    )
    events = sorted(events, key=lambda x: x.start)
    assert len(list(events)) == 2
    assert events[0].start == dt.datetime(2014, 6, 30, 7, 30)
    assert events[0].end == dt.datetime(2014, 6, 30, 12, 0)
    assert events[1].start == dt.datetime(2014, 7, 7, 8, 30)
    assert events[1].end == dt.datetime(2014, 7, 7, 12, 0)
    events = dbi.search('VEVENT')
    events = sorted(events, key=lambda x: x.start)
    assert len(list(events)) == 2
Beispiel #3
0
def test_event_rrule_multi_this_and_future_allday():
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_multi_this_and_future_allday,
               href='event_rrule_multi_this_and_future_allday.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [
        ('event_rrule_multi_this_and_future_allday.ics', 'abcd')
    ]
    events = sorted(
        dbi.get_floating(dt.datetime(2014, 4, 30, 0, 0),
                         dt.datetime(2014, 9, 27, 0, 0)), )
    assert len(events) == 6

    assert events[0][2] == dt.date(2014, 6, 30)
    assert events[1][2] == dt.date(2014, 7, 12)
    assert events[2][2] == dt.date(2014, 7, 17)
    assert events[3][2] == dt.date(2014, 7, 19)
    assert events[4][2] == dt.date(2014, 7, 24)
    assert events[5][2] == dt.date(2014, 7, 31)

    assert events[0][3] == dt.date(2014, 7, 1)
    assert events[1][3] == dt.date(2014, 7, 14)
    assert events[2][3] == dt.date(2014, 7, 18)
    assert events[3][3] == dt.date(2014, 7, 21)
    assert events[4][3] == dt.date(2014, 7, 25)
    assert events[5][3] == dt.date(2014, 8, 1)

    assert 'SUMMARY:Arbeit\n' in events[0][0]
    for event in [events[1], events[3]]:
        assert 'SUMMARY:Arbeit (lang)\n' in event[0]
    for event in [events[2], events[4], events[5]]:
        assert 'SUMMARY:Arbeit (neu)\n' in event[0]
Beispiel #4
0
def test_birthdays_no_year():
    db = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    assert list(db.get_floating(start, end)) == list()
    db.update_birthday(card_no_year, 'unix.vcf', calendar=calname)
    events = list(db.get_floating(start, end))
    assert len(events) == 1
    assert events[0].summary == 'Unix\'s birthday'
Beispiel #5
0
def test_event_rrule_multi_this_and_future_allday():
    dbi = backend.SQLiteDb('home', ':memory:', locale=locale)
    dbi.update(event_rrule_multi_this_and_future_allday,
               href='event_rrule_multi_this_and_future_allday.ics', etag='abcd')
    assert dbi.list() == [('event_rrule_multi_this_and_future_allday.ics', 'abcd')]
    events = get_allday_range(dbi, start=date(2014, 4, 30), end=date(2014, 9, 26))
    # we are getting two events twice, because they last for two days
    assert len(events) == 8

    assert events[0].start == date(2014, 6, 30)
    assert events[1].start == date(2014, 7, 12)
    assert events[2].start == date(2014, 7, 12)
    assert events[3].start == date(2014, 7, 17)
    assert events[4].start == date(2014, 7, 19)
    assert events[5].start == date(2014, 7, 19)
    assert events[6].start == date(2014, 7, 24)
    assert events[7].start == date(2014, 7, 31)

    assert events[0].end == date(2014, 7, 1)
    assert events[1].end == date(2014, 7, 14)
    assert events[2].end == date(2014, 7, 14)
    assert events[3].end == date(2014, 7, 18)
    assert events[4].end == date(2014, 7, 21)
    assert events[5].end == date(2014, 7, 21)
    assert events[6].end == date(2014, 7, 25)
    assert events[7].end == date(2014, 8, 1)

    assert unicode_type(events[0].vevent['SUMMARY']) == u'Arbeit'
    for event in events[1:3] + events[4:6]:
        assert unicode_type(event.vevent['SUMMARY']) == u'Arbeit (lang)'
    for event in events[3:4] + events[6:]:
        assert unicode_type(event.vevent['SUMMARY']) == u'Arbeit (neu)'
Beispiel #6
0
def test_event_rrule_this_and_future_multi_day_shift():
    dbi = backend.SQLiteDb('home', ':memory:', locale=locale)
    dbi.update(event_rrule_this_and_future_multi_day_shift, href='12345.ics', etag='abcd')
    assert dbi.list() == [('12345.ics', 'abcd')]
    events = dbi.get_time_range(datetime(2014, 4, 30, 0, 0), datetime(2014, 9, 26, 0, 0))
    events = sorted(events, key=lambda x: x.start)
    assert len(events) == 6

    assert events[0].start == berlin.localize(datetime(2014, 6, 30, 7, 0))
    assert events[1].start == berlin.localize(datetime(2014, 7, 8, 9, 0))
    assert events[2].start == berlin.localize(datetime(2014, 7, 15, 9, 0))
    assert events[3].start == berlin.localize(datetime(2014, 7, 22, 9, 0))
    assert events[4].start == berlin.localize(datetime(2014, 7, 29, 9, 0))
    assert events[5].start == berlin.localize(datetime(2014, 8, 5, 9, 0))

    assert events[0].end == berlin.localize(datetime(2014, 6, 30, 12, 0))
    assert events[1].end == berlin.localize(datetime(2014, 7, 9, 15, 0))
    assert events[2].end == berlin.localize(datetime(2014, 7, 16, 15, 0))
    assert events[3].end == berlin.localize(datetime(2014, 7, 23, 15, 0))
    assert events[4].end == berlin.localize(datetime(2014, 7, 30, 15, 0))
    assert events[5].end == berlin.localize(datetime(2014, 8, 6, 15, 0))

    assert unicode_type(events[0].vevent['SUMMARY']) == u'Arbeit'
    for event in events[1:]:
        assert unicode_type(event.vevent['SUMMARY']) == u'Arbeit (lang)'
Beispiel #7
0
def test_event_rrule_this_and_future_allday_prior():
    event_rrule_this_and_future_allday_prior = \
        event_rrule_this_and_future_allday_temp.format(20140705, 20140706)
    dbi = backend.SQLiteDb('home', ':memory:', locale=locale)
    dbi.update(event_rrule_this_and_future_allday_prior,
               href='rrule_this_and_future_allday.ics', etag='abcd')
    assert dbi.list() == [('rrule_this_and_future_allday.ics', 'abcd')]
    events = get_allday_range(dbi, date(2014, 4, 30), date(2014, 9, 26))

    assert len(events) == 6

    assert events[0].start == date(2014, 6, 30)
    assert events[1].start == date(2014, 7, 5)
    assert events[2].start == date(2014, 7, 12)
    assert events[3].start == date(2014, 7, 19)
    assert events[4].start == date(2014, 7, 26)
    assert events[5].start == date(2014, 8, 2)

    assert events[0].end == date(2014, 7, 1)
    assert events[1].end == date(2014, 7, 6)
    assert events[2].end == date(2014, 7, 13)
    assert events[3].end == date(2014, 7, 20)
    assert events[4].end == date(2014, 7, 27)
    assert events[5].end == date(2014, 8, 3)

    assert unicode_type(events[0].vevent['SUMMARY']) == u'Arbeit'
    for event in events[1:]:
        assert unicode_type(event.vevent['SUMMARY']) == u'Arbeit (lang)'
Beispiel #8
0
def test_event_rrule_multi_this_and_future_allday():
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_multi_this_and_future_allday,
               href='event_rrule_multi_this_and_future_allday.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [
        ('event_rrule_multi_this_and_future_allday.ics', 'abcd')
    ]
    events = sorted(
        dbi.get_floating(datetime(2014, 4, 30, 0, 0),
                         datetime(2014, 9, 27, 0, 0)))
    assert len(events) == 6

    assert events[0].start == date(2014, 6, 30)
    assert events[1].start == date(2014, 7, 12)
    assert events[2].start == date(2014, 7, 17)
    assert events[3].start == date(2014, 7, 19)
    assert events[4].start == date(2014, 7, 24)
    assert events[5].start == date(2014, 7, 31)

    assert events[0].end == date(2014, 6, 30)
    assert events[1].end == date(2014, 7, 13)
    assert events[2].end == date(2014, 7, 17)
    assert events[3].end == date(2014, 7, 20)
    assert events[4].end == date(2014, 7, 24)
    assert events[5].end == date(2014, 7, 31)

    assert str(events[0].summary) == 'Arbeit'
    for event in [events[1], events[3]]:
        assert str(event.summary) == 'Arbeit (lang)'
    for event in [events[2], events[4], events[5]]:
        assert str(event.summary) == 'Arbeit (neu)'
Beispiel #9
0
def test_event_different_timezones():
    dbi = backend.SQLiteDb('home', ':memory:', locale=LOCALE_BERLIN)
    dbi.update(_get_text('event_dt_london'), href='12345.ics', etag='abcd')

    events = dbi.get_time_range(datetime(2014, 4, 9, 0, 0), datetime(2014, 4, 9, 23, 59))
    events = list(events)
    assert len(events) == 1
    event = events[0]
    assert event.start_local == LONDON.localize(datetime(2014, 4, 9, 14))
    assert event.end_local == LONDON.localize(datetime(2014, 4, 9, 19))

    # no event scheduled on the next day
    events = dbi.get_time_range(datetime(2014, 4, 10, 0, 0), datetime(2014, 4, 10, 23, 59))
    events = list(events)
    assert len(events) == 0

    # now setting the local_timezone to Sydney
    dbi.locale = LOCALE_SYDNEY
    events = dbi.get_time_range(datetime(2014, 4, 9, 0, 0), datetime(2014, 4, 9, 23, 59))
    events = list(events)
    assert len(events) == 1
    event = events[0]
    assert event.start_local == SYDNEY.localize(datetime(2014, 4, 9, 23))
    assert event.end_local == SYDNEY.localize(datetime(2014, 4, 10, 4))

    # the event now spans the midnight, therefor it should also show up on the
    # next day
    events = dbi.get_time_range(datetime(2014, 4, 10, 0, 0), datetime(2014, 4, 10, 23, 59))
    events = list(events)
    assert len(events) == 1
    assert event.start_local == SYDNEY.localize(datetime(2014, 4, 9, 23))
    assert event.end_local == SYDNEY.localize(datetime(2014, 4, 10, 4))
Beispiel #10
0
def test_event_rrule_this_and_future_allday():
    dbi = backend.SQLiteDb('home', ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_this_and_future_allday,
               href='rrule_this_and_future_allday.ics', etag='abcd')
    assert dbi.list() == [('rrule_this_and_future_allday.ics', 'abcd')]
    events = get_allday_range(dbi, date(2014, 4, 30), date(2014, 9, 26))
    assert len(events) == 6

    assert events[0].start == date(2014, 6, 30)
    assert events[1].start == date(2014, 7, 8)
    assert events[2].start == date(2014, 7, 15)
    assert events[3].start == date(2014, 7, 22)
    assert events[4].start == date(2014, 7, 29)
    assert events[5].start == date(2014, 8, 5)

    assert events[0].end == date(2014, 6, 30)
    assert events[1].end == date(2014, 7, 8)
    assert events[2].end == date(2014, 7, 15)
    assert events[3].end == date(2014, 7, 22)
    assert events[4].end == date(2014, 7, 29)
    assert events[5].end == date(2014, 8, 5)

    assert unicode_type(events[0].summary) == u'Arbeit'
    for event in events[1:]:
        assert unicode_type(event.summary) == u'Arbeit (lang)'
Beispiel #11
0
def test_event_rrule_recurrence_id():
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    assert dbi.list(calname) == list()
    events = dbi.get_localized(
        BERLIN.localize(dt.datetime(2014, 6, 30, 0, 0)),
        BERLIN.localize(dt.datetime(2014, 8, 26, 0, 0)),
    )
    assert list(events) == list()
    dbi.update(_get_text('event_rrule_recuid'),
               href='12345.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [('12345.ics', 'abcd')]
    events = dbi.get_localized(
        BERLIN.localize(dt.datetime(2014, 6, 30, 0, 0)),
        BERLIN.localize(dt.datetime(2014, 8, 26, 0, 0)),
    )
    events = sorted(events, key=itemgetter(2))
    assert len(events) == 6

    # start
    assert events[0][2] == BERLIN.localize(dt.datetime(2014, 6, 30, 7, 0))
    assert events[1][2] == BERLIN.localize(dt.datetime(2014, 7, 7, 9, 0))
    assert events[2][2] == BERLIN.localize(dt.datetime(2014, 7, 14, 7, 0))
    assert events[3][2] == BERLIN.localize(dt.datetime(2014, 7, 21, 7, 0))
    assert events[4][2] == BERLIN.localize(dt.datetime(2014, 7, 28, 7, 0))
    assert events[5][2] == BERLIN.localize(dt.datetime(2014, 8, 4, 7, 0))

    calendars = dbi.get_localized_calendars(
        BERLIN.localize(dt.datetime(2014, 6, 30, 0, 0)),
        BERLIN.localize(dt.datetime(2014, 8, 26, 0, 0)),
    )
    calendars = list(calendars)
    assert len(calendars) == 6
Beispiel #12
0
def test_event_rrule_this_and_future_multi_day_shift():
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_this_and_future_multi_day_shift,
               href='12345.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [('12345.ics', 'abcd')]
    events = dbi.get_localized(BERLIN.localize(dt.datetime(2014, 4, 30, 0, 0)),
                               BERLIN.localize(dt.datetime(2014, 9, 26, 0, 0)))
    events = sorted(events, key=itemgetter(2))
    assert len(events) == 6

    assert events[0][2] == BERLIN.localize(dt.datetime(2014, 6, 30, 7, 0))
    assert events[1][2] == BERLIN.localize(dt.datetime(2014, 7, 8, 9, 0))
    assert events[2][2] == BERLIN.localize(dt.datetime(2014, 7, 15, 9, 0))
    assert events[3][2] == BERLIN.localize(dt.datetime(2014, 7, 22, 9, 0))
    assert events[4][2] == BERLIN.localize(dt.datetime(2014, 7, 29, 9, 0))
    assert events[5][2] == BERLIN.localize(dt.datetime(2014, 8, 5, 9, 0))

    assert events[0][3] == BERLIN.localize(dt.datetime(2014, 6, 30, 12, 0))
    assert events[1][3] == BERLIN.localize(dt.datetime(2014, 7, 9, 15, 0))
    assert events[2][3] == BERLIN.localize(dt.datetime(2014, 7, 16, 15, 0))
    assert events[3][3] == BERLIN.localize(dt.datetime(2014, 7, 23, 15, 0))
    assert events[4][3] == BERLIN.localize(dt.datetime(2014, 7, 30, 15, 0))
    assert events[5][3] == BERLIN.localize(dt.datetime(2014, 8, 6, 15, 0))

    assert 'SUMMARY:Arbeit\n' in events[0][0]
    for event in events[1:]:
        assert 'SUMMARY:Arbeit (lang)\n' in event[0]
Beispiel #13
0
def test_event_rrule_recurrence_id_reverse():
    """as icalendar elements can be saved in arbitrary order, we also have to
    deal with `reverse` ordered icalendar files
    """
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    assert dbi.list(calname) == list()
    events = dbi.get_localized(BERLIN.localize(datetime(2014, 6, 30, 0, 0)),
                               BERLIN.localize(datetime(2014, 8, 26, 0, 0)))
    assert list(events) == list()
    dbi.update(event_rrule_recurrence_id_reverse,
               href='12345.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [('12345.ics', 'abcd')]
    events = dbi.get_localized(BERLIN.localize(datetime(2014, 6, 30, 0, 0)),
                               BERLIN.localize(datetime(2014, 8, 26, 0, 0)))
    events = sorted(events, key=lambda x: x.start)
    assert len(events) == 6

    assert events[0].start == BERLIN.localize(datetime(2014, 6, 30, 7, 0))
    assert events[1].start == BERLIN.localize(datetime(2014, 7, 7, 9, 0))
    assert events[2].start == BERLIN.localize(datetime(2014, 7, 14, 7, 0))
    assert events[3].start == BERLIN.localize(datetime(2014, 7, 21, 7, 0))
    assert events[4].start == BERLIN.localize(datetime(2014, 7, 28, 7, 0))
    assert events[5].start == BERLIN.localize(datetime(2014, 8, 4, 7, 0))
Beispiel #14
0
def test_event_rrule_this_and_future_allday():
    dbi = backend.SQLiteDb('home', ':memory:', locale=locale)
    dbi.update(event_rrule_this_and_future_allday,
               href='rrule_this_and_future_allday.ics',
               etag='abcd')
    assert dbi.list() == [('rrule_this_and_future_allday.ics', 'abcd')]
    events = dbi.get_allday_range(date(2014, 4, 30), date(2014, 9, 26))
    events = sorted(events, key=lambda x: x.start)
    assert len(events) == 6

    assert events[0].start == date(2014, 6, 30)
    assert events[1].start == date(2014, 7, 8)
    assert events[2].start == date(2014, 7, 15)
    assert events[3].start == date(2014, 7, 22)
    assert events[4].start == date(2014, 7, 29)
    assert events[5].start == date(2014, 8, 5)

    assert events[0].end == date(2014, 7, 1)
    assert events[1].end == date(2014, 7, 9)
    assert events[2].end == date(2014, 7, 16)
    assert events[3].end == date(2014, 7, 23)
    assert events[4].end == date(2014, 7, 30)
    assert events[5].end == date(2014, 8, 6)

    assert unicode_type(events[0].vevent['SUMMARY']) == u'Arbeit'
    for event in events[1:]:
        assert unicode_type(event.vevent['SUMMARY']) == u'Arbeit (lang)'
Beispiel #15
0
def test_event_rrule_recurrence_id():
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    assert dbi.list(calname) == list()
    events = dbi.get_localized(BERLIN.localize(datetime(2014, 6, 30, 0, 0)),
                               BERLIN.localize(datetime(2014, 8, 26, 0, 0)))
    assert list(events) == list()
    dbi.update(_get_text('event_rrule_recuid'),
               href='12345.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [('12345.ics', 'abcd')]
    events = dbi.get_localized(BERLIN.localize(datetime(2014, 6, 30, 0, 0)),
                               BERLIN.localize(datetime(2014, 8, 26, 0, 0)))
    events = sorted(events, key=lambda x: x.start)
    assert len(events) == 6

    assert events[0].start == BERLIN.localize(datetime(2014, 6, 30, 7, 0))
    assert events[1].start == BERLIN.localize(datetime(2014, 7, 7, 9, 0))
    assert events[2].start == BERLIN.localize(datetime(2014, 7, 14, 7, 0))
    assert events[3].start == BERLIN.localize(datetime(2014, 7, 21, 7, 0))
    assert events[4].start == BERLIN.localize(datetime(2014, 7, 28, 7, 0))
    assert events[5].start == BERLIN.localize(datetime(2014, 8, 4, 7, 0))

    events = dbi.get_localized(
        BERLIN.localize(datetime(2014, 6, 30, 0, 0)),
        BERLIN.localize(datetime(2014, 8, 26, 0, 0)),
        minimal=True,
    )
    events = list(events)
    assert len(events) == 6
    for event in events:
        assert isinstance(event, EventStandIn)
Beispiel #16
0
def test_event_rrule_this_and_future():
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_this_and_future,
               href='12345.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [('12345.ics', 'abcd')]
    events = dbi.get_localized(BERLIN.localize(datetime(2014, 4, 30, 0, 0)),
                               BERLIN.localize(datetime(2014, 9, 26, 0, 0)))
    events = sorted(events, key=lambda x: x.start)
    assert len(events) == 6

    assert events[0].start == BERLIN.localize(datetime(2014, 6, 30, 7, 0))
    assert events[1].start == BERLIN.localize(datetime(2014, 7, 7, 9, 0))
    assert events[2].start == BERLIN.localize(datetime(2014, 7, 14, 9, 0))
    assert events[3].start == BERLIN.localize(datetime(2014, 7, 21, 9, 0))
    assert events[4].start == BERLIN.localize(datetime(2014, 7, 28, 9, 0))
    assert events[5].start == BERLIN.localize(datetime(2014, 8, 4, 9, 0))

    assert events[0].end == BERLIN.localize(datetime(2014, 6, 30, 12, 0))
    assert events[1].end == BERLIN.localize(datetime(2014, 7, 7, 18, 0))
    assert events[2].end == BERLIN.localize(datetime(2014, 7, 14, 18, 0))
    assert events[3].end == BERLIN.localize(datetime(2014, 7, 21, 18, 0))
    assert events[4].end == BERLIN.localize(datetime(2014, 7, 28, 18, 0))
    assert events[5].end == BERLIN.localize(datetime(2014, 8, 4, 18, 0))

    assert str(events[0].summary) == 'Arbeit'
    for num, event in enumerate(events[1:]):
        assert event.raw  # just making sure we don't raise any exception
        assert str(event.summary) == 'Arbeit (lang)'
Beispiel #17
0
def test_event_rrule_this_and_future_allday_prior():
    event_rrule_this_and_future_allday_prior = \
        event_rrule_this_and_future_allday_temp.format(20140705, 20140706)
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_this_and_future_allday_prior,
               href='rrule_this_and_future_allday.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [('rrule_this_and_future_allday.ics', 'abcd')]
    events = list(
        dbi.get_floating(datetime(2014, 4, 30, 0, 0),
                         datetime(2014, 9, 27, 0, 0)))

    assert len(events) == 6

    assert events[0].start == date(2014, 6, 30)
    assert events[1].start == date(2014, 7, 5)
    assert events[2].start == date(2014, 7, 12)
    assert events[3].start == date(2014, 7, 19)
    assert events[4].start == date(2014, 7, 26)
    assert events[5].start == date(2014, 8, 2)

    assert events[0].end == date(2014, 6, 30)
    assert events[1].end == date(2014, 7, 5)
    assert events[2].end == date(2014, 7, 12)
    assert events[3].end == date(2014, 7, 19)
    assert events[4].end == date(2014, 7, 26)
    assert events[5].end == date(2014, 8, 2)

    assert str(events[0].summary) == 'Arbeit'
    for event in events[1:]:
        assert str(event.summary) == 'Arbeit (lang)'
Beispiel #18
0
def test_event_rrule_this_and_future_multi_day_shift():
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_this_and_future_multi_day_shift,
               href='12345.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [('12345.ics', 'abcd')]
    events = dbi.get_localized(BERLIN.localize(datetime(2014, 4, 30, 0, 0)),
                               BERLIN.localize(datetime(2014, 9, 26, 0, 0)))
    events = sorted(events, key=lambda x: x.start)
    assert len(events) == 6

    assert events[0].start == BERLIN.localize(datetime(2014, 6, 30, 7, 0))
    assert events[1].start == BERLIN.localize(datetime(2014, 7, 8, 9, 0))
    assert events[2].start == BERLIN.localize(datetime(2014, 7, 15, 9, 0))
    assert events[3].start == BERLIN.localize(datetime(2014, 7, 22, 9, 0))
    assert events[4].start == BERLIN.localize(datetime(2014, 7, 29, 9, 0))
    assert events[5].start == BERLIN.localize(datetime(2014, 8, 5, 9, 0))

    assert events[0].end == BERLIN.localize(datetime(2014, 6, 30, 12, 0))
    assert events[1].end == BERLIN.localize(datetime(2014, 7, 9, 15, 0))
    assert events[2].end == BERLIN.localize(datetime(2014, 7, 16, 15, 0))
    assert events[3].end == BERLIN.localize(datetime(2014, 7, 23, 15, 0))
    assert events[4].end == BERLIN.localize(datetime(2014, 7, 30, 15, 0))
    assert events[5].end == BERLIN.localize(datetime(2014, 8, 6, 15, 0))

    assert str(events[0].summary) == 'Arbeit'
    for event in events[1:]:
        assert str(event.summary) == 'Arbeit (lang)'
Beispiel #19
0
def test_event_rrule_this_and_future():
    dbi = backend.SQLiteDb('home', ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_this_and_future, href='12345.ics', etag='abcd')
    assert dbi.list() == [('12345.ics', 'abcd')]
    events = dbi.get_time_range(datetime(2014, 4, 30, 0, 0), datetime(2014, 9, 26, 0, 0))
    events = sorted(events, key=lambda x: x.start)
    assert len(events) == 6

    assert events[0].start == BERLIN.localize(datetime(2014, 6, 30, 7, 0))
    assert events[1].start == BERLIN.localize(datetime(2014, 7, 7, 9, 0))
    assert events[2].start == BERLIN.localize(datetime(2014, 7, 14, 9, 0))
    assert events[3].start == BERLIN.localize(datetime(2014, 7, 21, 9, 0))
    assert events[4].start == BERLIN.localize(datetime(2014, 7, 28, 9, 0))
    assert events[5].start == BERLIN.localize(datetime(2014, 8, 4, 9, 0))

    assert events[0].end == BERLIN.localize(datetime(2014, 6, 30, 12, 0))
    assert events[1].end == BERLIN.localize(datetime(2014, 7, 7, 18, 0))
    assert events[2].end == BERLIN.localize(datetime(2014, 7, 14, 18, 0))
    assert events[3].end == BERLIN.localize(datetime(2014, 7, 21, 18, 0))
    assert events[4].end == BERLIN.localize(datetime(2014, 7, 28, 18, 0))
    assert events[5].end == BERLIN.localize(datetime(2014, 8, 4, 18, 0))

    assert unicode_type(events[0].summary) == u'Arbeit'
    for num, event in enumerate(events[1:]):
        event.raw
        assert unicode_type(event.summary) == u'Arbeit (lang)'
Beispiel #20
0
def test_event_rrule_this_and_future_allday():
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_this_and_future_allday,
               href='rrule_this_and_future_allday.ics', etag='abcd', calendar=calname)
    assert dbi.list(calname) == [('rrule_this_and_future_allday.ics', 'abcd')]
    events = list(dbi.get_floating(datetime(2014, 4, 30, 0, 0), datetime(2014, 9, 27, 0, 0)))
    assert len(events) == 6

    assert events[0].start == date(2014, 6, 30)
    assert events[1].start == date(2014, 7, 8)
    assert events[2].start == date(2014, 7, 15)
    assert events[3].start == date(2014, 7, 22)
    assert events[4].start == date(2014, 7, 29)
    assert events[5].start == date(2014, 8, 5)

    assert events[0].end == date(2014, 6, 30)
    assert events[1].end == date(2014, 7, 8)
    assert events[2].end == date(2014, 7, 15)
    assert events[3].end == date(2014, 7, 22)
    assert events[4].end == date(2014, 7, 29)
    assert events[5].end == date(2014, 8, 5)

    assert str(events[0].summary) == 'Arbeit'
    for event in events[1:]:
        assert str(event.summary) == 'Arbeit (lang)'

    events = list(dbi.get_floating(
        datetime(2014, 4, 30, 0, 0),
        datetime(2014, 9, 27, 0, 0),
        minimal=True,
    ))
    assert len(events) == 6
    for event in events:
        assert isinstance(event, EventStandIn)
Beispiel #21
0
def test_event_rrule_multi_this_and_future_allday():
    dbi = backend.SQLiteDb('home', ':memory:', locale=locale)
    dbi.update(event_rrule_multi_this_and_future_allday,
               href='event_rrule_multi_this_and_future_allday.ics',
               etag='abcd')
    assert dbi.list() == [('event_rrule_multi_this_and_future_allday.ics',
                           'abcd')]
    events = dbi.get_allday_range(start=date(2014, 4, 30),
                                  end=date(2014, 9, 26))
    events = sorted(events, key=lambda x: x.start)
    assert len(events) == 6

    assert events[0].start == date(2014, 6, 30)
    assert events[1].start == date(2014, 7, 12)
    assert events[2].start == date(2014, 7, 17)
    assert events[3].start == date(2014, 7, 19)
    assert events[4].start == date(2014, 7, 24)
    assert events[5].start == date(2014, 7, 31)

    assert events[0].end == date(2014, 7, 1)
    assert events[1].end == date(2014, 7, 14)
    assert events[2].end == date(2014, 7, 18)
    assert events[3].end == date(2014, 7, 21)
    assert events[4].end == date(2014, 7, 25)
    assert events[5].end == date(2014, 8, 1)

    assert unicode_type(events[0].vevent['SUMMARY']) == u'Arbeit'
    for event in [events[1], events[3]]:
        assert unicode_type(event.vevent['SUMMARY']) == u'Arbeit (lang)'
    for event in events[2:3] + events[4:]:
        assert unicode_type(event.vevent['SUMMARY']) == u'Arbeit (neu)'
Beispiel #22
0
def test_event_rrule_this_and_future_allday_prior():
    event_rrule_this_and_future_allday_prior = \
        event_rrule_this_and_future_allday_temp.format(20140705, 20140706)
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    dbi.update(event_rrule_this_and_future_allday_prior,
               href='rrule_this_and_future_allday.ics',
               etag='abcd',
               calendar=calname)
    assert dbi.list(calname) == [('rrule_this_and_future_allday.ics', 'abcd')]
    events = list(
        dbi.get_floating(dt.datetime(2014, 4, 30, 0, 0),
                         dt.datetime(2014, 9, 27, 0, 0)))

    assert len(events) == 6

    assert events[0][2] == dt.date(2014, 6, 30)
    assert events[1][2] == dt.date(2014, 7, 5)
    assert events[2][2] == dt.date(2014, 7, 12)
    assert events[3][2] == dt.date(2014, 7, 19)
    assert events[4][2] == dt.date(2014, 7, 26)
    assert events[5][2] == dt.date(2014, 8, 2)

    assert events[0][3] == dt.date(2014, 7, 1)
    assert events[1][3] == dt.date(2014, 7, 6)
    assert events[2][3] == dt.date(2014, 7, 13)
    assert events[3][3] == dt.date(2014, 7, 20)
    assert events[4][3] == dt.date(2014, 7, 27)
    assert events[5][3] == dt.date(2014, 8, 3)

    assert 'SUMMARY:Arbeit\n' in events[0][0]
    for event in events[1:]:
        assert 'SUMMARY:Arbeit (lang)\n' in event[0]
Beispiel #23
0
def test_this_and_prior():
    """we do not support THISANDPRIOR, therefore this should fail"""
    dbi = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    with pytest.raises(UpdateFailed):
        dbi.update(event_rrule_this_and_prior,
                   href='12345.ics',
                   etag='abcd',
                   calendar=calname)
Beispiel #24
0
def test_no_valid_timezone():
    dbi = backend.SQLiteDb('home', ':memory:', locale=LOCALE_BERLIN)
    dbi.update(_get_text('event_dt_local_missing_tz'), href='12345.ics', etag='abcd')
    events = dbi.get_time_range(datetime(2014, 4, 9, 0, 0), datetime(2014, 4, 10, 0, 0))
    events = sorted(list(events))
    assert len(events) == 1
    event = events[0]
    assert event.start == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
Beispiel #25
0
def test_update_one_should_not_affect_others():
    """test if an THISANDFUTURE param effects other events as well"""
    db = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    db.update(_get_text('event_d_15'), href='first', calendar=calname)
    events = db.get_floating(datetime(2015, 4, 9, 0, 0), datetime(2015, 4, 10, 0, 0))
    assert len(list(events)) == 1
    db.update(event_rrule_multi_this_and_future_allday, href='second', calendar=calname)
    events = list(db.get_floating(datetime(2015, 4, 9, 0, 0), datetime(2015, 4, 10, 0, 0)))
    assert len(events) == 1
Beispiel #26
0
def test_no_dtend():
    """test support for events with no dtend"""
    db = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    db.update(_get_text('event_dt_no_end'), href='event_dt_no_end', calendar=calname)
    events = db.get_floating(datetime(2016, 1, 16, 0, 0),
                             datetime(2016, 1, 17, 0, 0))
    event = list(events)[0]
    assert event.start == date(2016, 1, 16)
    assert event.end == date(2016, 1, 16)
Beispiel #27
0
def test_birthdays_no_fn():
    db = backend.SQLiteDb(['home'], ':memory:', locale=LOCALE_BERLIN)
    assert list(db.get_floating(datetime(1941, 9, 9, 0, 0),
                                datetime(1941, 9, 9, 23, 59, 59, 9999))) == list()
    db.update_birthday(card_no_fn, 'unix.vcf', calendar=calname)
    events = list(db.get_floating(datetime(1941, 9, 9, 0, 0),
                                  datetime(1941, 9, 9, 23, 59, 59, 9999)))
    assert len(events) == 1
    assert events[0].summary == 'Dennis MacAlistair Ritchie\'s 0th birthday'
Beispiel #28
0
def test_update_one_should_not_affect_others(tmpdir):
    """test if an THISANDFUTURE param effects other events as well"""
    dbpath = str(tmpdir) + '/khal.db'
    db = backend.SQLiteDb('home', dbpath, locale=LOCALE_BERLIN)
    db.update(_get_text('event_d_15'), href='first')
    events = db.get_allday_range(start=date(2015, 4, 9))
    assert len(list(events)) == 1
    db.update(event_rrule_multi_this_and_future_allday, href='second')
    events = db.get_allday_range(start=date(2015, 4, 9))
    assert len(list(events)) == 1
Beispiel #29
0
def test_birthdays():
    db = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    assert list(db.get_floating(start, end)) == list()
    db.update_birthday(card, 'unix.vcf', calendar=calname)
    events = list(db.get_floating(start, end))
    assert len(events) == 1
    assert events[0].summary == 'Unix\'s 0th birthday'
    events = list(db.get_floating(datetime(2016, 3, 11, 0, 0),
                                  datetime(2016, 3, 11, 23, 59, 59, 999)))
    assert events[0].summary == 'Unix\'s 45th birthday'
Beispiel #30
0
def test_zulu_events():
    """test if events in Zulu time are correctly recognized as locaized events"""
    db = backend.SQLiteDb([calname], ':memory:', locale=LOCALE_BERLIN)
    db.update(_get_text('event_dt_simple_zulu'), href='event_zulu', calendar=calname)
    events = db.get_localized(BERLIN.localize(datetime(2014, 4, 9, 0, 0)),
                              BERLIN.localize(datetime(2014, 4, 10, 0, 0)))
    events = list(events)
    assert len(events) == 1
    event = events[0]
    assert type(event) == LocalizedEvent
    assert event.start_local == BERLIN.localize(datetime(2014, 4, 9, 11, 30))