From: Jason Kirtland Date: Tue, 22 Apr 2008 19:57:13 +0000 (+0000) Subject: Explicit test of .autoflush(False) to avoid issues with save_on_init=True [ticket... X-Git-Tag: rel_0_5beta1~177 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9feff149324731d5a881eb0069c535019698ba79;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Explicit test of .autoflush(False) to avoid issues with save_on_init=True [ticket:869] --- diff --git a/test/orm/session.py b/test/orm/session.py index bb319a5f88..c429add40b 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