summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorHajime Nakagami <nakagami@gmail.com>2013-03-02 23:34:11 +0900
committerHajime Nakagami <nakagami@gmail.com>2013-03-02 23:34:11 +0900
commita40c50c3dba014bc2bb71d35e81034b09b29a7ab (patch)
treeb52c45295a38bcd7135acefd19b2ec7abd01c22a /test
parent62e3560e4d3b505fb557a5b8c4f48f4cf52ca4f0 (diff)
parentd9a7f2dbd5f9b3a111b04ff59089cb84220fe427 (diff)
downloadsqlalchemy-a40c50c3dba014bc2bb71d35e81034b09b29a7ab.tar.gz
merge from default
Diffstat (limited to 'test')
-rw-r--r--test/orm/test_session.py39
-rw-r--r--test/orm/test_sync.py23
-rw-r--r--test/orm/test_transaction.py12
3 files changed, 56 insertions, 18 deletions
diff --git a/test/orm/test_session.py b/test/orm/test_session.py
index 0a50a48cb..5c8968842 100644
--- a/test/orm/test_session.py
+++ b/test/orm/test_session.py
@@ -780,6 +780,27 @@ class SessionStateTest(_fixtures.FixtureTest):
go()
eq_(canary, [False])
+ def test_deleted_expunged(self):
+ users, User = self.tables.users, self.classes.User
+
+ mapper(User, users)
+ sess = Session()
+ sess.add(User(name='x'))
+ sess.commit()
+
+ u1 = sess.query(User).first()
+ sess.delete(u1)
+
+ assert not was_deleted(u1)
+ sess.flush()
+
+ assert was_deleted(u1)
+ assert u1 not in sess
+ assert object_session(u1) is sess
+ sess.commit()
+
+ assert object_session(u1) is None
+
class SessionStateWFixtureTest(_fixtures.FixtureTest):
def test_autoflush_rollback(self):
@@ -835,24 +856,6 @@ class SessionStateWFixtureTest(_fixtures.FixtureTest):
assert sa.orm.object_session(a) is None
assert sa.orm.attributes.instance_state(a).session_id is None
- def test_deleted_expunged(self):
- users, User = self.tables.users, self.classes.User
-
- mapper(User, users)
- sess = Session()
-
- u1 = sess.query(User).first()
- sess.delete(u1)
-
- assert not was_deleted(u1)
- sess.flush()
-
- assert was_deleted(u1)
- assert u1 not in sess
- assert object_session(u1) is sess
- sess.commit()
-
- assert object_session(u1) is None
class WeakIdentityMapTest(_fixtures.FixtureTest):
diff --git a/test/orm/test_sync.py b/test/orm/test_sync.py
index a2c894725..c5825e88b 100644
--- a/test/orm/test_sync.py
+++ b/test/orm/test_sync.py
@@ -212,6 +212,29 @@ class SyncTest(fixtures.MappedTest,
True
)
+ def test_source_modified_composite(self):
+ uowcommit, a1, b1, a_mapper, b_mapper = self._fixture()
+ a1.obj().foo = 10
+ a1._commit_all(a1.dict)
+ a1.obj().foo = 12
+ pairs = [(a_mapper.c.id, b_mapper.c.id,),
+ (a_mapper.c.foo, b_mapper.c.id)]
+ eq_(
+ sync.source_modified(uowcommit, a1, a_mapper, pairs),
+ True
+ )
+
+ def test_source_modified_composite_unmodified(self):
+ uowcommit, a1, b1, a_mapper, b_mapper = self._fixture()
+ a1.obj().foo = 10
+ a1._commit_all(a1.dict)
+ pairs = [(a_mapper.c.id, b_mapper.c.id,),
+ (a_mapper.c.foo, b_mapper.c.id)]
+ eq_(
+ sync.source_modified(uowcommit, a1, a_mapper, pairs),
+ False
+ )
+
def test_source_modified_no_unmapped(self):
uowcommit, a1, b1, a_mapper, b_mapper = self._fixture()
pairs = [(b_mapper.c.id, b_mapper.c.id,)]
diff --git a/test/orm/test_transaction.py b/test/orm/test_transaction.py
index 28735bd11..7df6ecf91 100644
--- a/test/orm/test_transaction.py
+++ b/test/orm/test_transaction.py
@@ -358,6 +358,18 @@ class SessionTransactionTest(FixtureTest):
sess.begin, subtransactions=True)
sess.close()
+ def test_no_sql_during_prepare(self):
+ sess = create_session(bind=testing.db, autocommit=False)
+
+ @event.listens_for(sess, "after_commit")
+ def go(session):
+ session.execute("select 1")
+ assert_raises_message(sa_exc.InvalidRequestError,
+ "This session is in 'prepared' state, where no "
+ "further SQL can be emitted until the "
+ "transaction is fully committed.",
+ sess.commit)
+
def _inactive_flushed_session_fixture(self):
users, User = self.tables.users, self.classes.User