diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-11-08 18:19:41 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-11-08 18:19:41 -0500 |
| commit | ac54ba0f2d8df5a76b6852841b6b3321c0e6c0e2 (patch) | |
| tree | 20e7291d3bfec442256b7b9580bddf52bc5c7f0c /examples | |
| parent | 29a07fc09a6c11b3e05457e2a8122682a90a4419 (diff) | |
| download | sqlalchemy-ac54ba0f2d8df5a76b6852841b6b3321c0e6c0e2.tar.gz | |
- add proof of concept for versioning, [ticket:2861]
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/versioning/test_versioning.py | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/examples/versioning/test_versioning.py b/examples/versioning/test_versioning.py index c1d9c9878..ca70c9ac0 100644 --- a/examples/versioning/test_versioning.py +++ b/examples/versioning/test_versioning.py @@ -3,8 +3,9 @@ from sqlalchemy.ext.declarative import declarative_base from .history_meta import Versioned, versioned_session from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy.orm import clear_mappers, Session, deferred, relationship -from sqlalchemy.testing import AssertsCompiledSQL, eq_ +from sqlalchemy.testing import AssertsCompiledSQL, eq_, assert_raises from sqlalchemy.testing.entities import BasicEntity, ComparableEntity +from sqlalchemy.orm import exc as orm_exc engine = None @@ -93,6 +94,35 @@ class TestVersioning(TestCase, AssertsCompiledSQL): ] ) + def test_w_mapper_versioning(self): + class SomeClass(Versioned, self.Base, ComparableEntity): + __tablename__ = 'sometable' + + id = Column(Integer, primary_key=True) + name = Column(String(50)) + + SomeClass.__mapper__.version_id_col = SomeClass.__table__.c.version + + self.create_tables() + sess = self.session + sc = SomeClass(name='sc1') + sess.add(sc) + sess.commit() + + s2 = Session(sess.bind) + sc2 = s2.query(SomeClass).first() + sc2.name = 'sc1modified' + + sc.name = 'sc1modified_again' + sess.commit() + + eq_(sc.version, 2) + + assert_raises( + orm_exc.StaleDataError, + s2.flush + ) + def test_from_null(self): class SomeClass(Versioned, self.Base, ComparableEntity): __tablename__ = 'sometable' |
