From 91d8a876040f3d29493aef1b19f215f417848942 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 30 Aug 2008 18:30:53 +0000 Subject: recheck the dirty list if extensions are present --- test/orm/session.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'test') 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) @@ -967,6 +967,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): -- cgit v1.2.1