def test_new_instance_cancelled(db, default_account, calendar): # Test that if we receive a cancelled override from Google, we save it # as an override with cancelled status rather than deleting it. event = recurring_event(db, default_account, calendar, TEST_EXDATE_RULE) override_uid = event.uid + "_20140814T203000Z" override = Event(title='CANCELLED', description='', uid=override_uid, location='', busy=False, read_only=False, reminders='', recurrence=None, start=arrow.get(2014, 8, 14, 22, 15, 00), end=arrow.get(2014, 8, 14, 23, 15, 00), all_day=False, is_owner=False, participants=[], provider_name='inbox', raw_data='', original_start_tz='America/Los_Angeles', original_start_time=arrow.get(2014, 8, 14, 21, 30, 00), master_event_uid=event.uid, cancelled=True, source='local') handle_event_updates(default_account.namespace.id, calendar.id, [override], log, db.session) db.session.commit() # Check the event got saved with the cancelled flag find_override = db.session.query(Event).filter_by( uid=override_uid, namespace_id=default_account.namespace.id).one() assert find_override.cancelled is True
def test_master_cancelled(db, default_account, calendar): # Test that when the master recurring event is cancelled, we cancel every # override too. event = recurring_event(db, default_account, calendar, TEST_EXDATE_RULE) override = recurring_override( db, event, arrow.get(2014, 9, 4, 20, 30, 0), arrow.get(2014, 9, 4, 21, 30, 0), arrow.get(2014, 9, 4, 22, 30, 0), ) update = recurring_event(db, default_account, calendar, TEST_EXDATE_RULE, commit=False) update.status = "cancelled" updates = [update] handle_event_updates(default_account.namespace.id, calendar.id, updates, log, db.session) db.session.commit() find_master = db.session.query(Event).filter_by(uid=event.uid).first() assert find_master.status == "cancelled" find_override = db.session.query(Event).filter_by(uid=override.uid).first() assert find_override.status == "cancelled"
def test_made_recurring_then_cancelled(db, default_account, calendar): # Test that when an event is updated with a recurrence and cancelled at # the same time, we cancel it. normal = recurring_event(db, default_account, calendar, None) # Check this is specifically an Event, not a RecurringEvent assert type(normal) == Event # Update with a recurrence rule *and* cancellation update = recurring_event(db, default_account, calendar, TEST_EXDATE_RULE, commit=False) update.status = 'cancelled' updates = [update] handle_event_updates(default_account.namespace.id, calendar.id, updates, log, db.session) db.session.commit() find_master = db.session.query(Event).filter_by(uid=normal.uid).first() assert find_master.status == 'cancelled'
def test_master_cancelled(db, default_account, calendar): # Test that when the master recurring event is cancelled, we cancel every # override too. event = recurring_event(db, default_account, calendar, TEST_EXDATE_RULE) override = recurring_override(db, event, arrow.get(2014, 9, 4, 20, 30, 00), arrow.get(2014, 9, 4, 21, 30, 00), arrow.get(2014, 9, 4, 22, 30, 00)) update = recurring_event(db, default_account, calendar, TEST_EXDATE_RULE, commit=False) update.status = 'cancelled' updates = [update] handle_event_updates(default_account.namespace.id, calendar.id, updates, log, db.session) db.session.commit() find_master = db.session.query(Event).filter_by(uid=event.uid).first() assert find_master.status == 'cancelled' find_override = db.session.query(Event).filter_by(uid=override.uid).first() assert find_override.status == 'cancelled'
def test_override_updated(db, default_account, calendar): # Test that when a recurring event override is created or updated # remotely, we update our override links appropriately. event = recurring_event(db, default_account, calendar, TEST_RRULE) assert event is not None # create a new Event, as if we just got it from Google master_uid = event.uid override_uid = master_uid + "_20140814T203000Z" override = Event(title='new override from google', description='', uid=override_uid, location='', busy=False, read_only=False, reminders='', recurrence=None, start=arrow.get(2014, 8, 14, 22, 30, 00), end=arrow.get(2014, 8, 14, 23, 30, 00), all_day=False, is_owner=False, participants=[], provider_name='inbox', raw_data='', original_start_tz='America/Los_Angeles', original_start_time=arrow.get(2014, 8, 14, 21, 30, 00), master_event_uid=master_uid, source='local') handle_event_updates(default_account.namespace.id, calendar.id, [override], log, db.session) db.session.commit() # Lets see if the event got saved with the right info find_override = db.session.query(Event).filter_by(uid=override_uid).one() assert find_override is not None assert find_override.master_event_id == event.id # Update the same override, making sure we don't create two override = Event(title='new override from google', description='', uid=override_uid, location='walk and talk', busy=False, read_only=False, reminders='', recurrence=None, start=arrow.get(2014, 8, 14, 22, 15, 00), end=arrow.get(2014, 8, 14, 23, 15, 00), all_day=False, is_owner=False, participants=[], provider_name='inbox', raw_data='', original_start_tz='America/Los_Angeles', original_start_time=arrow.get(2014, 8, 14, 21, 30, 00), master_event_uid=master_uid, source='local') handle_event_updates(default_account.namespace.id, calendar.id, [override], log, db.session) db.session.commit() # Let's see if the event got saved with the right info find_override = db.session.query(Event).filter_by(uid=override_uid).one() assert find_override is not None assert find_override.master_event_id == event.id assert find_override.location == 'walk and talk'