def test_unique_names(session): events = EventCollection(session) added = [ events.add( title='Squirrel Park Visit', start=datetime(2015, 6, 16, 9, 30), end=datetime(2015, 6, 16, 18, 00), timezone='US/Eastern' ) for x in range(11) ] assert added[0].name == 'squirrel-park-visit' assert added[1].name == 'squirrel-park-visit-1' assert added[2].name == 'squirrel-park-visit-2' assert added[3].name == 'squirrel-park-visit-3' assert added[4].name == 'squirrel-park-visit-4' assert added[5].name == 'squirrel-park-visit-5' assert added[6].name == 'squirrel-park-visit-6' assert added[7].name == 'squirrel-park-visit-7' assert added[8].name == 'squirrel-park-visit-8' assert added[9].name == 'squirrel-park-visit-9' assert added[10].name == 'squirrel-park-visit-10' events.delete(added[6]) event = events.add( title='Squirrel Park Visit', start=datetime(2015, 6, 16, 9, 30), end=datetime(2015, 6, 16, 18, 00), timezone='US/Eastern', recurrence='RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5' ) assert event.name == 'squirrel-park-visit-6' event.submit() event.publish() assert event.occurrences[0].name == 'squirrel-park-visit-6-2015-06-16' assert event.occurrences[1].name == 'squirrel-park-visit-6-2015-06-17' assert event.occurrences[2].name == 'squirrel-park-visit-6-2015-06-18' assert event.occurrences[3].name == 'squirrel-park-visit-6-2015-06-19' assert event.occurrences[4].name == 'squirrel-park-visit-6-2015-06-20' assert events.by_name('test') is None assert events.by_name('squirrel-park-visit-6') == event occurrences = OccurrenceCollection(session) assert occurrences.by_name('test') is None occurrence = occurrences.by_name('squirrel-park-visit-6-2015-06-20') assert occurrence == event.occurrences[4]
def test_unicode(session): event = EventCollection(session).add( title='Salon du mieux-vivre, 16e édition', start=datetime(2015, 6, 16, 9, 30), end=datetime(2015, 6, 16, 18, 00), timezone='Europe/Zurich', content={ 'description': 'Rendez-vous automnal des médecines.' }, location='Salon du mieux-vivre à Saignelégier', tags=['salons', 'congrès'] ) event.submit() event.publish() event = EventCollection(session).add( title='Témoins de Jéhovah', start=datetime(2015, 6, 18, 14, 00), end=datetime(2015, 6, 18, 16, 00), timezone='Europe/Zurich', content={ 'description': 'Congrès en français et espagnol.' }, location='Salon du mieux-vivre à Saignelégier', tags=['témoins'] ) event.submit() event.publish() occurrences = OccurrenceCollection(session) assert occurrences.query(outdated=True).count() == 2 tags = occurrences.used_tags assert sorted(tags) == ['congrès', 'salons', 'témoins'] occurrence = occurrences.query(outdated=True, tags=['congrès']).one() assert occurrence.title == 'Salon du mieux-vivre, 16e édition' assert occurrence.location == 'Salon du mieux-vivre à Saignelégier' assert sorted(occurrence.tags) == ['congrès', 'salons'] assert occurrence.event.description \ == 'Rendez-vous automnal des médecines.' occurrence = occurrences.query(outdated=True, tags=['témoins']).one() assert occurrence.title == 'Témoins de Jéhovah' assert occurrence.location == 'Salon du mieux-vivre à Saignelégier' assert occurrence.tags == ['témoins'] assert occurrence.event.description == 'Congrès en français et espagnol.'
def test_occurrence_collection_outdated(session): today = date.today() for year in (today.year - 1, today.year, today.year + 1): event = EventCollection(session).add( title='Event {0}-{1}'.format(year, today.month), start=datetime(year, today.month, today.day, 0, 0), end=datetime(year, today.month, today.day, 23, 59), timezone='US/Eastern' ) event.submit() event.publish() occurrences = OccurrenceCollection(session) assert occurrences.query().count() == 2 assert occurrences.query(outdated=True).count() == 3 assert occurrences.query(start=date(today.year - 1, 1, 1)).count() == 3 assert occurrences.query(start=date(today.year - 1, 1, 1)).count() == 3
def test_occurrence_collection_pagination(session): occurrences = OccurrenceCollection(session) assert occurrences.page_index == 0 assert occurrences.pages_count == 0 assert occurrences.batch == [] for year in range(2008, 2011): for month in range(1, 13): event = EventCollection(session).add( title='Event {0}-{1}'.format(year, month), start=datetime(year, month, 18, 14, 00), end=datetime(year, month, 18, 16, 00), timezone='US/Eastern', tags=['month-{0}'.format(month)], recurrence='RRULE:FREQ=DAILY;INTERVAL=1;COUNT=4' ) event.submit() if year > 2008: event.publish() if year > 2009: event.withdraw() class PatchedCollection(OccurrenceCollection): def query(self, **kwargs): return super().query(outdated=True, **kwargs) occurrences = PatchedCollection(session) assert occurrences.query().count() == 4 * 12 occurrences = PatchedCollection(session) assert occurrences.subset_count == 48 assert all([o.start.year == 2009 for o in occurrences.batch]) occurrences = PatchedCollection(session, start=date(2009, 12, 1)) assert occurrences.subset_count == 4 assert all([o.start.year == 2009 and o.start.month == 12 for o in occurrences.batch]) occurrences = PatchedCollection(session, end=date(2009, 1, 31)) assert occurrences.subset_count == 4 assert all([o.start.year == 2009 and o.start.month == 1 for o in occurrences.batch]) occurrences = PatchedCollection(session, start=date(2009, 5, 1), end=date(2009, 6, 30)) assert occurrences.subset_count == 8 assert all([o.start.year == 2009 and o.start.month in [5, 6] for o in occurrences.batch]) occurrences = PatchedCollection(session, tags=['month-7', 'month-8']) assert occurrences.subset_count == 8 assert all([o.start.year == 2009 and o.start.month in [7, 8] for o in occurrences.batch]) occurrences = PatchedCollection(session, start=date(2009, 5, 1), end=date(2009, 6, 30), tags=['month-6']) assert occurrences.subset_count == 4 assert all([o.start.year == 2009 and o.start.month == 6 for o in occurrences.batch]) occurrences = PatchedCollection(session).for_filter() assert occurrences.start is None assert occurrences.end is None assert occurrences.tags == [] occurrences = PatchedCollection(session, start=date(2009, 5, 1), end=date(2009, 6, 30), tags=['month-6']).for_filter() assert occurrences.start == date(2009, 5, 1) assert occurrences.end == date(2009, 6, 30) assert occurrences.tags == ['month-6'] occurrences = occurrences.for_filter(start=date(2010, 5, 1)) assert occurrences.start == date(2010, 5, 1) assert occurrences.end == date(2009, 6, 30) assert occurrences.tags == ['month-6'] occurrences = occurrences.for_filter(end=None) assert occurrences.start == date(2010, 5, 1) assert occurrences.end is None assert occurrences.tags == ['month-6'] occurrences = occurrences.for_filter(tags=[]) assert occurrences.start == date(2010, 5, 1) assert occurrences.end is None assert occurrences.tags == [] occurrences = occurrences.for_filter(tags=['a', 'b']) assert occurrences.start == date(2010, 5, 1) assert occurrences.end is None assert occurrences.tags == ['a', 'b'] occurrences = occurrences.for_filter(tag='c') assert occurrences.start == date(2010, 5, 1) assert occurrences.end is None assert occurrences.tags == ['a', 'b', 'c'] occurrences = occurrences.for_filter(tag='a') assert occurrences.start == date(2010, 5, 1) assert occurrences.end is None assert occurrences.tags == ['b', 'c']