def dirty_session(): with Restorable(session): smi = Smi(name='newspaper') cat1 = Category(name='cat1') cat2 = Category(name='cat2') user = User(name='john') role = Role(user=user, smi=smi, categories=[cat1, cat1]) session.add_all([smi, cat1, cat2, user, role]) session.commit()
def test_restorable_with_scoped_session_and_autocommit(self): # `autocommit` affects the `Session` constructor session = self.scoped_session(autocommit=True) with Restorable(session): # code must call `begin` explitcitly when `autocommit=True` session.begin() smi = Smi(name='newspaper') session.add(smi) session.commit() self.assertEqual(self.session.query(Smi).all(), [])
def exceptional_behavior(): with Restorable(session): smi = Smi(name='newspaper') cat1 = Category(name='cat1') cat2 = Category(name='cat2') user = User(name='john') role = Role(user=user, smi=smi, categories=[cat1, cat2]) session.add_all([smi, cat1, cat2, user, role]) session.commit() raise Exception('unwanted')
def test_restorable_and_normal_behavior(self): session = self.session with Restorable(session): smi = Smi(name='newspaper') cat1 = Category(name='cat1') cat2 = Category(name='cat2') user = User(name='john') role = Role(user=user, smi=smi, categories=[cat1, cat2]) session.add_all([smi, cat1, cat2, user, role]) session.commit() self.assertEqual(self.session.query(User).all(), []) self.assertEqual(self.session.query(Category).all(), []) self.assertEqual(self.session.query(Role).all(), []) self.assertEqual(self.session.query(Smi).all(), [])