Exemple #1
0
def test_update_simple():
    event = Event.fromString(_get_text('event_dt_simple'), **EVENT_KWARGS)
    event_updated = Event.fromString(_get_text('event_dt_simple_updated'), **EVENT_KWARGS)
    event.update_summary('A not so simple Event')
    event.update_description('Everything has changed')
    event.update_location('anywhere')
    assert normalize_component(event.raw) == normalize_component(event_updated.raw)
Exemple #2
0
def test_sort_event_end():
    event_dt = _get_text('event_dt_simple')
    start = BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30))
    end = BERLIN.localize(dt.datetime(2014, 4, 9, 10, 45))
    event1 = Event.fromString(event_dt, **EVENT_KWARGS)
    event2 = Event.fromString(event_dt, start=start, end=end, **EVENT_KWARGS)
    assert event1 < event2
Exemple #3
0
def test_update_simple():
    event = Event.fromString(_get_text('event_dt_simple'), **EVENT_KWARGS)
    event_updated = Event.fromString(_get_text('event_dt_simple_updated'), **EVENT_KWARGS)
    event.update_summary('A not so simple Event')
    event.update_description('Everything has changed')
    event.update_location('anywhere')
    event.update_categories(['meeting'])
    assert normalize_component(event.raw) == normalize_component(event_updated.raw)
Exemple #4
0
def test_cancelled_instance():
    orig_event_str = _get_text('event_rrule_recuid_cancelled')
    event = Event.fromString(orig_event_str, ref='1405314000', **EVENT_KWARGS)
    assert event.format(SEARCH_FORMAT, dt.date(2014, 7, 14)) == \
        'CANCELLED 14.07.2014 07:00-12:00 Arbeit ⟳\x1b[0m'
    event = Event.fromString(orig_event_str, ref='PROTO', **EVENT_KWARGS)
    assert event.format(SEARCH_FORMAT, dt.date(2014, 7, 14)) == \
        '30.06.2014 07:00-12:00 Arbeit ⟳\x1b[0m'
Exemple #5
0
def test_update_remove_categories():
    event = Event.fromString(_get_text('event_dt_simple_updated'),
                             **EVENT_KWARGS)
    event_nocat = Event.fromString(_get_text('event_dt_simple_nocat'),
                                   **EVENT_KWARGS)
    event.update_categories([])
    assert normalize_component(event.raw) == normalize_component(
        event_nocat.raw)
Exemple #6
0
def test_cancelled_instance():
    orig_event_str = _get_text('event_rrule_recuid_cancelled')
    event = Event.fromString(orig_event_str, ref='1405314000', **EVENT_KWARGS)
    assert event.format(SEARCH_FORMAT, dt.date(2014, 7, 14)) == \
        'CANCELLED 14.07.2014 07:00-12:00 Arbeit ⟳\x1b[0m'
    event = Event.fromString(orig_event_str, ref='PROTO', **EVENT_KWARGS)
    assert event.format(SEARCH_FORMAT, dt.date(2014, 7, 14)) == \
        '30.06.2014 07:00-12:00 Arbeit ⟳\x1b[0m'
Exemple #7
0
 def test_list(self, cal_vdir):
     cal, vdir = cal_vdir
     event = Event.fromString(event_d, calendar=cal.name, locale=locale)
     cal.new(event)
     event = Event.fromString(event_today, calendar=cal.name, locale=locale)
     cal.new(event)
     hrefs = sorted(href for href, uid in cal._dbtool.list())
     assert set(str(cal._dbtool.get(href).uid) for href in hrefs) == set((
         '*****@*****.**',
         'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU',
     ))
Exemple #8
0
 def test_list(self, coll_vdirs):
     coll, vdirs = coll_vdirs
     event = Event.fromString(event_d, calendar=cal1, locale=aux.locale)
     coll.new(event)
     event = Event.fromString(event_today, calendar=cal1, locale=aux.locale)
     coll.new(event)
     hrefs = sorted(href for href, uid in coll._backend.list(cal1))
     assert set(str(coll._backend.get(href, calendar=cal1).uid) for href in hrefs) == set((
         '*****@*****.**',
         'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU',
     ))
Exemple #9
0
 def test_list(self, cal_vdir):
     cal, vdir = cal_vdir
     event = Event.fromString(event_d, calendar=cal.name, locale=aux.locale)
     cal.new(event)
     event = Event.fromString(event_today, calendar=cal.name, locale=aux.locale)
     cal.new(event)
     hrefs = sorted(href for href, uid in cal._dbtool.list())
     assert set(str(cal._dbtool.get(href).uid) for href in hrefs) == set((
         '*****@*****.**',
         'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU',
     ))
Exemple #10
0
 def test_search(self, coll_vdirs):
     coll, vdirs = coll_vdirs
     assert len(list(coll.search('Event'))) == 0
     event = Event.fromString(
         _get_text('event_dt_simple'), calendar=cal1, locale=LOCALE_BERLIN)
     coll.new(event, cal1)
     assert len(list(coll.search('Event'))) == 1
     event = Event.fromString(
         _get_text('event_dt_floating'), calendar=cal1, locale=LOCALE_BERLIN)
     coll.new(event, cal1)
     assert len(list(coll.search('Search for me'))) == 1
     assert len(list(coll.search('Event'))) == 2
Exemple #11
0
 def test_list(self, cal_vdir):
     cal, vdir = cal_vdir
     event = Event.fromString(event_d, calendar=cal.name, locale=locale)
     cal.new(event)
     event = Event.fromString(event_today, calendar=cal.name, locale=locale)
     cal.new(event)
     hrefs = sorted(href for href, uid in cal._dbtool.list())
     assert hrefs == [
         'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU.ics',
         '*****@*****.**'
     ]
     assert cal._dbtool.get('*****@*****.**').uid == '*****@*****.**'
Exemple #12
0
 def test_list(self, coll_vdirs):
     coll, vdirs = coll_vdirs
     event = Event.fromString(event_d, calendar=cal1, locale=aux.locale)
     coll.new(event)
     event = Event.fromString(event_today, calendar=cal1, locale=aux.locale)
     coll.new(event)
     hrefs = sorted(href for href, uid in coll._backend.list(cal1))
     assert set(
         str(coll._backend.get(href, calendar=cal1).uid)
         for href in hrefs) == set((
             '*****@*****.**',
             'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU',
         ))
Exemple #13
0
def test_event_dt_tz_missing():
    """localized event DTSTART;TZID=foo, but VTIMEZONE components missing"""
    event_str = _get_text('event_dt_local_missing_tz')
    event = Event.fromString(event_str, **EVENT_KWARGS)
    assert event.start == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end == BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    assert event.start_local == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BERLIN.localize(datetime(2014, 4, 9, 10, 30))

    event = Event.fromString(event_str, calendar='foobar', locale=MIXED_LOCALE)
    assert event.start == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end == BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    assert event.start_local == BOGOTA.localize(datetime(2014, 4, 9, 2, 30))
    assert event.end_local == BOGOTA.localize(datetime(2014, 4, 9, 3, 30))
Exemple #14
0
def test_event_dt_tz_missing():
    """localized event DTSTART;TZID=foo, but VTIMEZONE components missing"""
    event_str = _get_text('event_dt_local_missing_tz')
    event = Event.fromString(event_str, **EVENT_KWARGS)
    assert event.start == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end == BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    assert event.start_local == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BERLIN.localize(datetime(2014, 4, 9, 10, 30))

    event = Event.fromString(event_str, calendar='foobar', locale=MIXED_LOCALE)
    assert event.start == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end == BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    assert event.start_local == BOGOTA.localize(datetime(2014, 4, 9, 2, 30))
    assert event.end_local == BOGOTA.localize(datetime(2014, 4, 9, 3, 30))
Exemple #15
0
def test_event_dt_tz_missing():
    """localized event DTSTART;TZID=foo, but VTIMEZONE components missing"""
    event_str = _get_text('event_dt_local_missing_tz')
    event = Event.fromString(event_str, **EVENT_KWARGS)
    assert event.start == BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30))
    assert event.end == BERLIN.localize(dt.datetime(2014, 4, 9, 10, 30))
    assert event.start_local == BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BERLIN.localize(dt.datetime(2014, 4, 9, 10, 30))
    assert event.format('{duration}', relative_to=dt.date.today()) == '1h\x1b[0m'

    event = Event.fromString(event_str, calendar='foobar', locale=LOCALE_MIXED)
    assert event.start == BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30))
    assert event.end == BERLIN.localize(dt.datetime(2014, 4, 9, 10, 30))
    assert event.start_local == BOGOTA.localize(dt.datetime(2014, 4, 9, 2, 30))
    assert event.end_local == BOGOTA.localize(dt.datetime(2014, 4, 9, 3, 30))
Exemple #16
0
 def test_list(self, coll_vdirs):
     coll, vdirs = coll_vdirs
     event = Event.fromString(_get_text('event_d'), calendar=cal1, locale=LOCALE_BERLIN)
     assert event.etag is None
     assert event.href is None
     coll.new(event)
     assert event.etag is not None
     assert event.href == 'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU.ics'
     event = Event.fromString(event_today, calendar=cal1, locale=LOCALE_BERLIN)
     coll.new(event)
     hrefs = sorted(href for href, etag in coll._backend.list(cal1))
     assert set(str(coll.get_event(href, calendar=cal1).uid) for href in hrefs) == set((
         '*****@*****.**',
         'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU',
     ))
Exemple #17
0
def test_event_d_rr():
    event_d_rr = _get_text('event_d_rr')
    event = Event.fromString(event_d_rr, **EVENT_KWARGS)
    assert event.recurring is True
    desc = 'Another Event ⟳'
    assert event.relative_to(date(2014, 4, 9)) == desc
    assert event.event_description == '09.04.2014: Another Event\nRepeat: FREQ=DAILY;COUNT=10'

    start = date(2014, 4, 10)
    end = date(2014, 4, 11)
    event = Event.fromString(event_d_rr, start=start, end=end, **EVENT_KWARGS)
    assert event.recurring is True
    desc = 'Another Event ⟳'
    assert event.relative_to(date(2014, 4, 10)) == desc
    assert event.event_description == '10.04.2014: Another Event\nRepeat: FREQ=DAILY;COUNT=10'
Exemple #18
0
def test_transform_event():
    """test if transformation between different event types works"""
    event_d = _get_text('event_d')
    event = Event.fromString(event_d, **EVENT_KWARGS)
    assert isinstance(event, AllDayEvent)
    start = BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    end = BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    event.update_start_end(start, end)
    assert isinstance(event, LocalizedEvent)
    assert event.event_description == '09:30-10:30 09.04.2014: An Event'
    analog_event = Event.fromString(_get_text('event_dt_simple'), **EVENT_KWARGS)
    assert normalize_component(event.raw) == normalize_component(analog_event.raw)

    with pytest.raises(ValueError):
        event.update_start_end(start, date(2014, 4, 9))
Exemple #19
0
def test_event_d_rr():
    event_d_rr = _get_text('event_d_rr')
    event = Event.fromString(event_d_rr, **EVENT_KWARGS)
    assert event.recurring is True
    desc = 'Another Event ⟳'
    assert event.relative_to(date(2014, 4, 9)) == desc
    assert event.event_description == '09.04.2014: Another Event\nRepeat: FREQ=DAILY;COUNT=10'

    start = date(2014, 4, 10)
    end = date(2014, 4, 11)
    event = Event.fromString(event_d_rr, start=start, end=end, **EVENT_KWARGS)
    assert event.recurring is True
    desc = 'Another Event ⟳'
    assert event.relative_to(date(2014, 4, 10)) == desc
    assert event.event_description == '10.04.2014: Another Event\nRepeat: FREQ=DAILY;COUNT=10'
Exemple #20
0
def test_event_dt_tz_missing():
    """localized event DTSTART;TZID=foo, but VTIMEZONE components missing"""
    event_str = _get_text('event_dt_local_missing_tz')
    event = Event.fromString(event_str, **EVENT_KWARGS)
    assert event.start == BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30))
    assert event.end == BERLIN.localize(dt.datetime(2014, 4, 9, 10, 30))
    assert event.start_local == BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BERLIN.localize(dt.datetime(2014, 4, 9, 10, 30))
    assert event.format('{duration}', relative_to=dt.date.today()) == '1h\x1b[0m'

    event = Event.fromString(event_str, calendar='foobar', locale=LOCALE_MIXED)
    assert event.start == BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30))
    assert event.end == BERLIN.localize(dt.datetime(2014, 4, 9, 10, 30))
    assert event.start_local == BOGOTA.localize(dt.datetime(2014, 4, 9, 2, 30))
    assert event.end_local == BOGOTA.localize(dt.datetime(2014, 4, 9, 3, 30))
Exemple #21
0
def test_format_colors():
    event = Event.fromString(_get_text('event_dt_simple'), **EVENT_KWARGS)
    format_ = '{red}{title}{reset}'
    assert human_formatter(format_)(event.attributes(dt.date(
        2014, 4, 9))) == '\x1b[31mAn Event\x1b[0m\x1b[0m'
    assert human_formatter(format_, colors=False)(event.attributes(
        dt.date(2014, 4, 9), colors=False)) == 'An Event'
Exemple #22
0
def test_event_d_rr():
    event_d_rr = _get_text('event_d_rr')
    event = Event.fromString(event_d_rr, **EVENT_KWARGS)
    assert event.recurring is True
    assert event.format(LIST_FORMAT, dt.date(2014, 4, 9)) == ' Another Event ⟳\x1b[0m'
    assert event.format(SEARCH_FORMAT, dt.date(2014, 4, 9)) == \
        '09.04.2014 Another Event ⟳\x1b[0m'
    assert event.format('{repeat-pattern}', dt.date(2014, 4, 9)) == 'FREQ=DAILY;COUNT=10\x1b[0m'

    start = dt.date(2014, 4, 10)
    end = dt.date(2014, 4, 11)
    event = Event.fromString(event_d_rr, start=start, end=end, **EVENT_KWARGS)
    assert event.recurring is True
    assert event.format(LIST_FORMAT, dt.date(2014, 4, 10)) == ' Another Event ⟳\x1b[0m'
    assert event.format(SEARCH_FORMAT, dt.date(2014, 4, 10)) == \
        '10.04.2014 Another Event ⟳\x1b[0m'
Exemple #23
0
def test_no_end():
    """reading an event with neither DTEND nor DURATION"""
    event = Event.fromString(_get_text('event_dt_no_end'), **EVENT_KWARGS)
    # TODO make sure the event also gets converted to an all day event, as we
    # usually do
    assert event.format(SEARCH_FORMAT, dt.date(2014, 4, 12)) == \
        '16.01.2016 08:00-17.01.2016 08:00 Test\x1b[0m'
Exemple #24
0
def test_remove_instance_from_two_rdate():
    """removing an instance from a recurring event which has two RDATE props"""
    event = Event.fromString(_get_text('event_dt_two_rd'), **EVENT_KWARGS)
    assert event.raw.count('RDATE') == 2
    event.delete_instance(dt.datetime(2014, 4, 10, 9, 30))
    assert event.raw.count('RDATE') == 1
    assert 'RDATE:20140411T093000,20140412T093000' in event.raw.split('\r\n')
Exemple #25
0
def test_update_event_d():
    event_d = _get_text('event_d')
    event = Event.fromString(event_d, **EVENT_KWARGS)
    event.update_start_end(date(2014, 4, 20), date(2014, 4, 22))
    assert event.event_description == '20.04. - 22.04.2014: An Event'
    assert 'DTSTART;VALUE=DATE:20140420' in event.raw.split('\r\n')
    assert 'DTEND;VALUE=DATE:20140423' in event.raw.split('\r\n')
Exemple #26
0
def test_update_event_d():
    event_d = _get_text('event_d')
    event = Event.fromString(event_d, **EVENT_KWARGS)
    event.update_start_end(date(2014, 4, 20), date(2014, 4, 22))
    assert event.event_description == '20.04. - 22.04.2014: An Event'
    assert 'DTSTART;VALUE=DATE:20140420' in event.raw.split('\r\n')
    assert 'DTEND;VALUE=DATE:20140423' in event.raw.split('\r\n')
Exemple #27
0
def test_event_dt_duration():
    """event has no end, but duration"""
    event_dt_duration = _get_text('event_dt_duration')
    event = Event.fromString(event_dt_duration, **EVENT_KWARGS)
    assert event.relative_to(date(2014, 4, 9)) == u'09:30-10:30: An Event'
    assert event.end == BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    assert event.event_description == u'09:30-10:30 09.04.2014: An Event'
Exemple #28
0
def test_remove_instance_from_two_rdate():
    """removing an instance from a recurring event which has two RDATE props"""
    event = Event.fromString(_get_text('event_dt_two_rd'), **EVENT_KWARGS)
    assert event.raw.count('RDATE') == 2
    event.delete_instance(datetime(2014, 4, 10, 9, 30))
    assert event.raw.count('RDATE') == 1
    assert 'RDATE:20140411T093000,20140412T093000' in event.raw.split('\r\n')
Exemple #29
0
def test_no_end():
    """reading an event with neither DTEND nor DURATION"""
    event = Event.fromString(_get_text('event_dt_no_end'), **EVENT_KWARGS)
    # TODO make sure the event also gets converted to an all day event, as we
    # usually do
    assert event.format(SEARCH_FORMAT, dt.date(2014, 4, 12)) == \
        '16.01.2016 08:00-17.01.2016 08:00 Test\x1b[0m'
Exemple #30
0
def test_event_dt_duration():
    """event has no end, but duration"""
    event_dt_duration = _get_text('event_dt_duration')
    event = Event.fromString(event_dt_duration, **EVENT_KWARGS)
    assert event.relative_to(date(2014, 4, 9)) == '09:30-10:30: An Event'
    assert event.end == BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    assert event.event_description == '09:30-10:30 09.04.2014: An Event'
Exemple #31
0
 def test_search(self, coll_vdirs):
     coll, vdirs = coll_vdirs
     assert len(list(coll.search('Event'))) == 0
     event = Event.fromString(
         _get_text('event_dt_simple'), calendar=cal1, locale=aux.locale)
     coll.new(event, cal1)
     assert len(list(coll.search('Event'))) == 1
Exemple #32
0
def test_event_no_dst():
    """test the creation of a corect VTIMEZONE for timezones with no dst"""
    event_no_dst = _get_text('event_no_dst')
    cal_no_dst = _get_text('cal_no_dst')
    event = Event.fromString(event_no_dst, calendar='foobar', locale=BOGOTA_LOCALE)
    assert normalize_component(event.raw) == normalize_component(cal_no_dst)
    assert event.event_description == '09:30-10:30 09.04.2014: An Event'
Exemple #33
0
def test_multi_uid():
    """test for support for events with consist of several sub events with
    the same uid"""
    orig_event_str = _get_text('event_rrule_recuid')
    event = Event.fromString(orig_event_str, **EVENT_KWARGS)
    for line in orig_event_str.split('\n'):
        assert line in event.raw.split('\r\n')
Exemple #34
0
def test_remove_instance_from_rrule():
    """removing an instance from a recurring event"""
    event = Event.fromString(_get_text('event_dt_rr'), **EVENT_KWARGS)
    event.delete_instance(dt.datetime(2014, 4, 10, 9, 30))
    assert 'EXDATE:20140410T093000' in event.raw.split('\r\n')
    event.delete_instance(dt.datetime(2014, 4, 12, 9, 30))
    assert 'EXDATE:20140410T093000,20140412T093000' in event.raw.split('\r\n')
Exemple #35
0
def test_raw_d():
    event_d = _get_text('event_d')
    event = Event.fromString(event_d, **EVENT_KWARGS)
    assert event.raw.split('\r\n') == _get_text('cal_d').split('\n')
    assert event.format(LIST_FORMAT, dt.date(2014, 4, 9)) == ' An Event\x1b[0m'
    assert event.format(SEARCH_FORMAT,
                        dt.date(2014, 4, 9)) == '09.04.2014 An Event\x1b[0m'
Exemple #36
0
def test_multi_uid():
    """test for support for events with consist of several sub events with
    the same uid"""
    orig_event_str = _get_text('event_rrule_recuid')
    event = Event.fromString(orig_event_str, **EVENT_KWARGS)
    for line in orig_event_str.split('\n'):
        assert line in event.raw.split('\r\n')
Exemple #37
0
def test_event_d_rr():
    event_d_rr = _get_text('event_d_rr')
    event = Event.fromString(event_d_rr, **EVENT_KWARGS)
    assert event.recurring is True
    assert event.format(LIST_FORMAT, date(2014, 4, 9)) == ' Another Event ⟳\x1b[0m'
    assert event.format(SEARCH_FORMAT, date(2014, 4, 9)) == \
        '09.04.2014 Another Event ⟳\x1b[0m'
    assert event.format('{repeat-pattern}', date(2014, 4, 9)) == 'FREQ=DAILY;COUNT=10\x1b[0m'

    start = date(2014, 4, 10)
    end = date(2014, 4, 11)
    event = Event.fromString(event_d_rr, start=start, end=end, **EVENT_KWARGS)
    assert event.recurring is True
    assert event.format(LIST_FORMAT, date(2014, 4, 10)) == ' Another Event ⟳\x1b[0m'
    assert event.format(SEARCH_FORMAT, date(2014, 4, 10)) == \
        '10.04.2014 Another Event ⟳\x1b[0m'
Exemple #38
0
 def test_search(self, coll_vdirs):
     coll, vdirs = coll_vdirs
     assert len(list(coll.search('Event'))) == 0
     event = Event.fromString(
         _get_text('event_dt_simple'), calendar=cal1, locale=utils.locale)
     coll.new(event, cal1)
     assert len(list(coll.search('Event'))) == 1
Exemple #39
0
def test_remove_instance_from_rrule():
    """removing an instance from a recurring event"""
    event = Event.fromString(_get_text('event_dt_rr'), **EVENT_KWARGS)
    event.delete_instance(datetime(2014, 4, 10, 9, 30))
    assert 'EXDATE:20140410T093000' in event.raw.split('\r\n')
    event.delete_instance(datetime(2014, 4, 12, 9, 30))
    assert 'EXDATE:20140410T093000,20140412T093000' in event.raw.split('\r\n')
Exemple #40
0
def test_event_dt_rr():
    event_dt_rr = _get_text('event_dt_rr')
    event = Event.fromString(event_dt_rr, **EVENT_KWARGS)
    assert event.recurring is True
    desc = '09:30-10:30: An Event ⟳'
    assert event.relative_to(date(2014, 4, 9)) == desc
    assert event.event_description == \
        '09:30-10:30 09.04.2014: An Event\nRepeat: FREQ=DAILY;COUNT=10'
Exemple #41
0
def test_event_no_dst():
    """test the creation of a corect VTIMEZONE for timezones with no dst"""
    event_no_dst = _get_text('event_no_dst')
    cal_no_dst = _get_text('cal_no_dst')
    event = Event.fromString(event_no_dst, calendar='foobar', locale=BOGOTA_LOCALE)
    assert normalize_component(event.raw) == normalize_component(cal_no_dst)
    assert event.format(SEARCH_FORMAT, date(2014, 4, 10)) == \
        '09.04.2014 09:30-10:30 An Event \x1b[0m'
Exemple #42
0
def test_raw_dt():
    event_dt = _get_text('event_dt_simple')
    start = BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    end = BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    event = Event.fromString(event_dt, start=start, end=end, **EVENT_KWARGS)
    assert normalize_component(event.raw) == \
        normalize_component(_get_text('event_dt_simple_inkl_vtimezone'))
    assert event.relative_to(date(2014, 4, 9)) == u'09:30-10:30: An Event'

    event = Event.fromString(event_dt, **EVENT_KWARGS)
    assert event.relative_to(date(2014, 4, 9)) == u'09:30-10:30: An Event'
    assert event.event_description == u'09:30-10:30 09.04.2014: An Event'
    assert event.recurring is False
    assert event.duration == timedelta(hours=1)
    assert event.uid == 'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU'
    assert event.ident == 'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU'
    assert event.organizer == ''
Exemple #43
0
def test_event_dt_long():
    event_dt_long = _get_text('event_dt_long')
    event = Event.fromString(event_dt_long, **EVENT_KWARGS)
    assert event.relative_to(date(2014, 4, 9)) == '09:30→ : An Event'
    # FIXME ugly! replace with one arrow
    assert event.relative_to(date(2014, 4, 10)) == '→ → : An Event'
    assert event.relative_to(date(2014, 4, 12)) == '→ 10:30: An Event'
    assert event.event_description == '09.04.2014 09:30 - 12.04.2014 10:30: An Event'
Exemple #44
0
def test_transform_event():
    """test if transformation between different event types works"""
    event_d = _get_text('event_d')
    event = Event.fromString(event_d, **EVENT_KWARGS)
    assert isinstance(event, AllDayEvent)
    start = BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    end = BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    event.update_start_end(start, end)
    assert isinstance(event, LocalizedEvent)
    assert event.event_description == '09:30-10:30 09.04.2014: An Event'
    analog_event = Event.fromString(_get_text('event_dt_simple'),
                                    **EVENT_KWARGS)
    assert normalize_component(event.raw) == normalize_component(
        analog_event.raw)

    with pytest.raises(ValueError):
        event.update_start_end(start, date(2014, 4, 9))
Exemple #45
0
def test_remove_instance_from_recuid():
    """remove an istance from an event which is specified via an additional VEVENT
    with the same UID (which we call `recuid` here"""
    event = Event.fromString(_get_text('event_rrule_recuid'), **EVENT_KWARGS)
    assert event.raw.split('\r\n').count('UID:event_rrule_recurrence_id') == 2
    event.delete_instance(BERLIN.localize(datetime(2014, 7, 7, 7, 0)))
    assert event.raw.split('\r\n').count('UID:event_rrule_recurrence_id') == 1
    assert 'EXDATE;TZID=Europe/Berlin:20140707T070000' in event.raw.split('\r\n')
Exemple #46
0
def test_event_dt_floating():
    """start and end time have no timezone, i.e. a floating event"""
    event_str = _get_text('event_dt_floating')
    event = Event.fromString(event_str, **EVENT_KWARGS)
    assert isinstance(event, FloatingEvent)
    assert event.relative_to(date(2014, 4, 9)) == '09:30-10:30: An Event'
    assert event.event_description == '09:30-10:30 09.04.2014: An Event'
    assert event.start == datetime(2014, 4, 9, 9, 30)
    assert event.end == datetime(2014, 4, 9, 10, 30)
    assert event.start_local == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BERLIN.localize(datetime(2014, 4, 9, 10, 30))

    event = Event.fromString(event_str, calendar='foobar', locale=MIXED_LOCALE)
    assert event.start == datetime(2014, 4, 9, 9, 30)
    assert event.end == datetime(2014, 4, 9, 10, 30)
    assert event.start_local == BOGOTA.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BOGOTA.localize(datetime(2014, 4, 9, 10, 30))
Exemple #47
0
def test_raw_dt():
    event_dt = _get_text('event_dt_simple')
    start = BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30))
    end = BERLIN.localize(dt.datetime(2014, 4, 9, 10, 30))
    event = Event.fromString(event_dt, start=start, end=end, **EVENT_KWARGS)
    with freeze_time('2016-1-1'):
        assert normalize_component(event.raw) == \
            normalize_component(_get_text('event_dt_simple_inkl_vtimezone'))

    event = Event.fromString(event_dt, **EVENT_KWARGS)
    assert event.format(LIST_FORMAT, dt.date(2014, 4, 9)) == '09:30-10:30 An Event\x1b[0m'
    assert event.format(SEARCH_FORMAT, dt.date(2014, 4, 9)) == \
        '09.04.2014 09:30-10:30 An Event\x1b[0m'
    assert event.recurring is False
    assert event.duration == dt.timedelta(hours=1)
    assert event.uid == 'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU'
    assert event.organizer == ''
Exemple #48
0
def test_event_dt_rr():
    event_dt_rr = _get_text('event_dt_rr')
    event = Event.fromString(event_dt_rr, **EVENT_KWARGS)
    assert event.recurring is True
    desc = '09:30-10:30: An Event ⟳'
    assert event.relative_to(date(2014, 4, 9)) == desc
    assert event.event_description == \
        '09:30-10:30 09.04.2014: An Event\nRepeat: FREQ=DAILY;COUNT=10'
Exemple #49
0
def test_event_dt_floating():
    """start and end time have no timezone, i.e. a floating event"""
    event_str = _get_text('event_dt_floating')
    event = Event.fromString(event_str, **EVENT_KWARGS)
    assert isinstance(event, FloatingEvent)
    assert event.relative_to(date(2014, 4, 9)) == '09:30-10:30: An Event'
    assert event.event_description == '09:30-10:30 09.04.2014: An Event'
    assert event.start == datetime(2014, 4, 9, 9, 30)
    assert event.end == datetime(2014, 4, 9, 10, 30)
    assert event.start_local == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BERLIN.localize(datetime(2014, 4, 9, 10, 30))

    event = Event.fromString(event_str, calendar='foobar', locale=MIXED_LOCALE)
    assert event.start == datetime(2014, 4, 9, 9, 30)
    assert event.end == datetime(2014, 4, 9, 10, 30)
    assert event.start_local == BOGOTA.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BOGOTA.localize(datetime(2014, 4, 9, 10, 30))
Exemple #50
0
def test_remove_instance_from_recuid():
    """remove an istance from an event which is specified via an additional VEVENT
    with the same UID (which we call `recuid` here"""
    event = Event.fromString(_get_text('event_rrule_recuid'), **EVENT_KWARGS)
    assert event.raw.split('\r\n').count('UID:event_rrule_recurrence_id') == 2
    event.delete_instance(BERLIN.localize(dt.datetime(2014, 7, 7, 7, 0)))
    assert event.raw.split('\r\n').count('UID:event_rrule_recurrence_id') == 1
    assert 'EXDATE;TZID=Europe/Berlin:20140707T070000' in event.raw.split('\r\n')
Exemple #51
0
def test_raw_dt():
    event_dt = _get_text('event_dt_simple')
    start = BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    end = BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    event = Event.fromString(event_dt, start=start, end=end, **EVENT_KWARGS)
    with freeze_time('2016-1-1'):
        assert normalize_component(event.raw) == \
            normalize_component(_get_text('event_dt_simple_inkl_vtimezone'))

    event = Event.fromString(event_dt, **EVENT_KWARGS)
    assert event.format(LIST_FORMAT, date(2014, 4, 9)) == '09:30-10:30 An Event \x1b[0m'
    assert event.format(SEARCH_FORMAT, date(2014, 4, 9)) == \
        '09.04.2014 09:30-10:30 An Event \x1b[0m'
    assert event.recurring is False
    assert event.duration == timedelta(hours=1)
    assert event.uid == 'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU'
    assert event.organizer == ''
Exemple #52
0
def test_raw_dt():
    event_dt = _get_text('event_dt_simple')
    start = BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    end = BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    event = Event.fromString(event_dt, start=start, end=end, **EVENT_KWARGS)
    assert normalize_component(event.raw) == \
        normalize_component(_get_text('event_dt_simple_inkl_vtimezone'))
    assert event.relative_to(date(2014, 4, 9)) == '09:30-10:30: An Event'

    event = Event.fromString(event_dt, **EVENT_KWARGS)
    assert event.relative_to(date(2014, 4, 9)) == '09:30-10:30: An Event'
    assert event.event_description == '09:30-10:30 09.04.2014: An Event'
    assert event.recurring is False
    assert event.duration == timedelta(hours=1)
    assert event.uid == 'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU'
    assert event.ident == 'V042MJ8B3SJNFXQOJL6P53OFMHJE8Z3VZWOU'
    assert event.organizer == ''
Exemple #53
0
def test_event_dt_long():
    event_dt_long = _get_text('event_dt_long')
    event = Event.fromString(event_dt_long, **EVENT_KWARGS)
    assert event.relative_to(date(2014, 4, 9)) == '09:30→ : An Event'
    # FIXME ugly! replace with one arrow
    assert event.relative_to(date(2014, 4, 10)) == '→ → : An Event'
    assert event.relative_to(date(2014, 4, 12)) == '→ 10:30: An Event'
    assert event.event_description == '09.04.2014 09:30 - 12.04.2014 10:30: An Event'
Exemple #54
0
def test_event_dt_long():
    event_dt_long = _get_text('event_dt_long')
    event = Event.fromString(event_dt_long, **EVENT_KWARGS)

    assert event.format(LIST_FORMAT, dt.date(2014, 4, 9)) == '09:30→ An Event\x1b[0m'
    assert event.format(LIST_FORMAT, dt.date(2014, 4, 10)) == '↔ An Event\x1b[0m'
    assert event.format(LIST_FORMAT, dt.date(2014, 4, 12)) == '→10:30 An Event\x1b[0m'
    assert event.format(SEARCH_FORMAT, dt.date(2014, 4, 10)) == \
        '09.04.2014 09:30-12.04.2014 10:30 An Event\x1b[0m'
Exemple #55
0
def test_event_dt_floating():
    """start and end time have no timezone, i.e. a floating event"""
    event_str = _get_text('event_dt_floating')
    event = Event.fromString(event_str, **EVENT_KWARGS)
    assert isinstance(event, FloatingEvent)
    assert event.format(LIST_FORMAT, date(2014, 4, 9)) == '09:30-10:30 An Event \x1b[0m'
    assert event.format(SEARCH_FORMAT, date(2014, 4, 9)) == \
        '09.04.2014 09:30-10:30 An Event \x1b[0m'
    assert event.start == datetime(2014, 4, 9, 9, 30)
    assert event.end == datetime(2014, 4, 9, 10, 30)
    assert event.start_local == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BERLIN.localize(datetime(2014, 4, 9, 10, 30))

    event = Event.fromString(event_str, calendar='foobar', locale=MIXED_LOCALE)
    assert event.start == datetime(2014, 4, 9, 9, 30)
    assert event.end == datetime(2014, 4, 9, 10, 30)
    assert event.start_local == BOGOTA.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end_local == BOGOTA.localize(datetime(2014, 4, 9, 10, 30))
Exemple #56
0
def test_event_d_two_days():
    event_d_long = _get_text('event_d_long')
    event = Event.fromString(event_d_long, **EVENT_KWARGS)
    event.update_start_end(dt.date(2014, 4, 9), dt.date(2014, 4, 10))
    assert event.format(LIST_FORMAT, dt.date(2014, 4, 9)) == '↦ Another Event\x1b[0m'
    assert event.format(LIST_FORMAT, dt.date(2014, 4, 10)) == '⇥ Another Event\x1b[0m'
    assert event.format(LIST_FORMAT, dt.date(2014, 4, 12)) == ' Another Event\x1b[0m'
    assert event.format(SEARCH_FORMAT, dt.date(2014, 4, 10)) == \
        '09.04.2014-10.04.2014 Another Event\x1b[0m'
Exemple #57
0
def test_event_dt_duration():
    """event has no end, but duration"""
    event_dt_duration = _get_text('event_dt_duration')
    event = Event.fromString(event_dt_duration, **EVENT_KWARGS)
    assert event.start == BERLIN.localize(datetime(2014, 4, 9, 9, 30))
    assert event.end == BERLIN.localize(datetime(2014, 4, 9, 10, 30))
    assert event.format(LIST_FORMAT, date(2014, 4, 9)) == '09:30-10:30 An Event \x1b[0m'
    assert event.format(SEARCH_FORMAT, date(2014, 4, 9)) == \
        '09.04.2014 09:30-10:30 An Event \x1b[0m'
Exemple #58
0
def test_event_no_dst():
    """test the creation of a corect VTIMEZONE for timezones with no dst"""
    event_no_dst = _get_text('event_no_dst')
    cal_no_dst = _get_text('cal_no_dst')
    event = Event.fromString(event_no_dst,
                             calendar='foobar',
                             locale=BOGOTA_LOCALE)
    assert normalize_component(event.raw) == normalize_component(cal_no_dst)
    assert event.event_description == '09:30-10:30 09.04.2014: An Event'
Exemple #59
0
def test_event_dt_rr():
    event_dt_rr = _get_text('event_dt_rr')
    event = Event.fromString(event_dt_rr, **EVENT_KWARGS)
    assert event.recurring is True

    assert event.format(LIST_FORMAT, date(2014, 4, 9)) == '09:30-10:30 An Event ⟳\x1b[0m'
    assert event.format(SEARCH_FORMAT, date(2014, 4, 9)) == \
        '09.04.2014 09:30-10:30 An Event ⟳\x1b[0m'
    assert event.format('{repeat-pattern}', date(2014, 4, 9)) == 'FREQ=DAILY;COUNT=10\x1b[0m'
Exemple #60
0
def test_event_dt_long():
    event_dt_long = _get_text('event_dt_long')
    event = Event.fromString(event_dt_long, **EVENT_KWARGS)

    assert event.format(LIST_FORMAT, date(2014, 4, 9)) == '09:30→ An Event \x1b[0m'
    assert event.format(LIST_FORMAT, date(2014, 4, 10)) == '↔ An Event \x1b[0m'
    assert event.format(LIST_FORMAT, date(2014, 4, 12)) == '→10:30 An Event \x1b[0m'
    assert event.format(SEARCH_FORMAT, date(2014, 4, 10)) == \
        '09.04.2014 09:30-12.04.2014 10:30 An Event \x1b[0m'