summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-08-30 18:30:53 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-08-30 18:30:53 +0000
commit91d8a876040f3d29493aef1b19f215f417848942 (patch)
tree9f3ff9592495e8c33662e5aeb3000fd5f4e87b3b /test
parent66dd5d79e82f9f4eff5c4a405acfec5978385144 (diff)
downloadsqlalchemy-91d8a876040f3d29493aef1b19f215f417848942.tar.gz
recheck the dirty list if extensions are present
Diffstat (limited to 'test')
-rw-r--r--test/orm/session.py31
1 files changed, 30 insertions, 1 deletions
diff --git a/test/orm/session.py b/test/orm/session.py
index f06b20515..c2e6e9d15 100644
--- a/test/orm/session.py
+++ b/test/orm/session.py
@@ -929,7 +929,7 @@ class SessionTest(_fixtures.FixtureTest):
if isinstance(obj, User):
x = session.query(User).filter(User.name=='another %s' % obj.name).one()
session.delete(x)
-
+
sess = create_session(extension = MyExt(), autoflush=True)
u = User(name='u1')
sess.add(u)
@@ -968,6 +968,35 @@ class SessionTest(_fixtures.FixtureTest):
)
@testing.resolve_artifact_names
+ def test_before_flush_affects_dirty(self):
+ mapper(User, users)
+
+ class MyExt(sa.orm.session.SessionExtension):
+ def before_flush(self, session, flush_context, objects):
+ for obj in list(session.identity_map.values()):
+ obj.name += " modified"
+
+ sess = create_session(extension = MyExt(), autoflush=True)
+ u = User(name='u1')
+ sess.add(u)
+ sess.flush()
+ self.assertEquals(sess.query(User).order_by(User.name).all(),
+ [
+ User(name='u1')
+ ]
+ )
+
+ sess.add(User(name='u2'))
+ sess.flush()
+ sess.clear()
+ self.assertEquals(sess.query(User).order_by(User.name).all(),
+ [
+ User(name='u1 modified'),
+ User(name='u2')
+ ]
+ )
+
+ @testing.resolve_artifact_names
def test_reentrant_flush(self):
mapper(User, users)