summaryrefslogtreecommitdiff
path: root/test/orm/session.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2008-04-22 19:57:13 +0000
committerJason Kirtland <jek@discorporate.us>2008-04-22 19:57:13 +0000
commit9feff149324731d5a881eb0069c535019698ba79 (patch)
tree255d6d6811fcbbd41acd7065483daca5d9bd2410 /test/orm/session.py
parentf472959846839c259162b36111596ac6a3d78273 (diff)
downloadsqlalchemy-9feff149324731d5a881eb0069c535019698ba79.tar.gz
Explicit test of .autoflush(False) to avoid issues with save_on_init=True [ticket:869]
Diffstat (limited to 'test/orm/session.py')
-rw-r--r--test/orm/session.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/test/orm/session.py b/test/orm/session.py
index bb319a5f8..c429add40 100644
--- a/test/orm/session.py
+++ b/test/orm/session.py
@@ -1017,7 +1017,7 @@ class ScopedMapperTest(TestBase):
metadata = MetaData(testing.db)
table = Table('sometable', metadata,
Column('id', Integer, primary_key=True),
- Column('data', String(30)))
+ Column('data', String(30), nullable=False))
table2 = Table('someothertable', metadata,
Column('id', Integer, primary_key=True),
Column('someid', None, ForeignKey('sometable.id'))
@@ -1098,6 +1098,36 @@ class ScopedMapperTest(TestBase):
assert MyClass().expunge() == "an expunge !"
+ def _test_autoflush_saveoninit(self, on_init, autoflush=None):
+ Session = scoped_session(
+ sessionmaker(transactional=True, autoflush=True))
+
+ class Foo(object):
+ def __init__(self, data=None):
+ if autoflush is not None:
+ friends = Session.query(Foo).autoflush(autoflush).all()
+ else:
+ friends = Session.query(Foo).all()
+ self.data = data
+
+ Session.mapper(Foo, table, save_on_init=on_init)
+
+ a1 = Foo('an address')
+ Session.flush()
+
+ def test_autoflush_saveoninit(self):
+ """Test save_on_init + query.autoflush()"""
+ self._test_autoflush_saveoninit(False)
+ self._test_autoflush_saveoninit(False, True)
+ self._test_autoflush_saveoninit(False, False)
+
+ self.assertRaises(exceptions.DBAPIError,
+ self._test_autoflush_saveoninit, True)
+ self.assertRaises(exceptions.DBAPIError,
+ self._test_autoflush_saveoninit, True, True)
+ self._test_autoflush_saveoninit(True, False)
+
+
class ScopedMapperTest2(ORMTest):
def define_tables(self, metadata):
global table, table2