diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-08-03 18:03:57 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-08-03 18:03:57 +0000 |
| commit | 4769ea895b3312e2d27d52b45816771df8a5c5c7 (patch) | |
| tree | 1a42eb5d2ce5d2a6874ffa41fca1dbf85700b51b /test | |
| parent | 312647647d242d903b38cc9144c9c7b92cc2da03 (diff) | |
| download | sqlalchemy-4769ea895b3312e2d27d52b45816771df8a5c5c7.tar.gz | |
- renamed autoexpire to expire_on_commit
- renamed SessionTransaction autoflush to reentrant_flush to more clearly state its purpose
- added _enable_transaction_accounting, flag for Mike Bernson which disables the whole 0.5 transaction state management; the system depends on expiry on rollback in order to function.
Diffstat (limited to 'test')
| -rw-r--r-- | test/orm/dynamic.py | 2 | ||||
| -rw-r--r-- | test/orm/session.py | 2 | ||||
| -rw-r--r-- | test/orm/transaction.py | 70 |
3 files changed, 71 insertions, 3 deletions
diff --git a/test/orm/dynamic.py b/test/orm/dynamic.py index 5d9b54b15..3a36ccdd5 100644 --- a/test/orm/dynamic.py +++ b/test/orm/dynamic.py @@ -160,7 +160,7 @@ class FlushTest(_fixtures.FixtureTest): mapper(User, users, properties={ 'addresses':dynamic_loader(mapper(Address, addresses)) }) - sess = create_session(autoexpire=False, autocommit=False, autoflush=True) + sess = create_session(expire_on_commit=False, autocommit=False, autoflush=True) u1 = User(name='jack') u1.addresses.append(Address(email_address='lala@hoho.com')) sess.add(u1) diff --git a/test/orm/session.py b/test/orm/session.py index 7a7075a45..09b9df05d 100644 --- a/test/orm/session.py +++ b/test/orm/session.py @@ -1057,7 +1057,7 @@ class DisposedStates(testing.ORMTest): self._test_session().expire_all() def test_rollback(self): - sess = self._test_session(autocommit=False, autoexpire=True) + sess = self._test_session(autocommit=False, expire_on_commit=True) sess.commit() sess.rollback() diff --git a/test/orm/transaction.py b/test/orm/transaction.py index ce487a5f6..24a2768c3 100644 --- a/test/orm/transaction.py +++ b/test/orm/transaction.py @@ -181,7 +181,10 @@ class RollbackRecoverTest(TransactionTest): u1.name = 'edward' a1.email_address = 'foober' s.commit() - assert s.query(User).all() == [User(id=1, name='edward', addresses=[Address(email_address='foober')])] + self.assertEquals( + s.query(User).all(), + [User(id=1, name='edward', addresses=[Address(email_address='foober')])] + ) @testing.requires.savepoints def test_pk_violation_with_savepoint(self): @@ -351,7 +354,72 @@ class SavepointTest(TransactionTest): assert u1 not in s.deleted +class AccountingFlagsTest(TransactionTest): + + def test_no_expire_on_commit(self): + sess = sessionmaker(expire_on_commit=False)() + u1 = User(name='ed') + sess.add(u1) + sess.commit() + + testing.db.execute(users.update(users.c.name=='ed').values(name='edward')) + + assert u1.name == 'ed' + sess.expire_all() + assert u1.name == 'edward' + + def test_rollback_no_accounting(self): + sess = sessionmaker(_enable_transaction_accounting=False)() + u1 = User(name='ed') + sess.add(u1) + sess.commit() + + u1.name = 'edwardo' + sess.rollback() + + testing.db.execute(users.update(users.c.name=='ed').values(name='edward')) + + assert u1.name == 'edwardo' + sess.expire_all() + assert u1.name == 'edward' + + def test_commit_no_accounting(self): + sess = sessionmaker(_enable_transaction_accounting=False)() + u1 = User(name='ed') + sess.add(u1) + sess.commit() + u1.name = 'edwardo' + sess.rollback() + + testing.db.execute(users.update(users.c.name=='ed').values(name='edward')) + + assert u1.name == 'edwardo' + sess.commit() + + assert testing.db.execute(select([users.c.name])).fetchall() == [('edwardo',)] + assert u1.name == 'edwardo' + + sess.delete(u1) + sess.commit() + + def test_preflush_no_accounting(self): + sess = sessionmaker(_enable_transaction_accounting=False, autocommit=True)() + u1 = User(name='ed') + sess.add(u1) + sess.flush() + + sess.begin() + u1.name = 'edwardo' + u2 = User(name="some other user") + sess.add(u2) + + sess.rollback() + + sess.begin() + assert testing.db.execute(select([users.c.name])).fetchall() == [('ed',)] + + class AutocommitTest(TransactionTest): def test_begin_nested_requires_trans(self): sess = create_session(autocommit=True) |
