diff options
author | Jason Kirtland <jek@discorporate.us> | 2008-04-22 19:57:13 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2008-04-22 19:57:13 +0000 |
commit | 9feff149324731d5a881eb0069c535019698ba79 (patch) | |
tree | 255d6d6811fcbbd41acd7065483daca5d9bd2410 /test/orm/session.py | |
parent | f472959846839c259162b36111596ac6a3d78273 (diff) | |
download | sqlalchemy-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.py | 32 |
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 |