summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-11-08 18:19:41 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2013-11-08 18:19:41 -0500
commitac54ba0f2d8df5a76b6852841b6b3321c0e6c0e2 (patch)
tree20e7291d3bfec442256b7b9580bddf52bc5c7f0c /examples
parent29a07fc09a6c11b3e05457e2a8122682a90a4419 (diff)
downloadsqlalchemy-ac54ba0f2d8df5a76b6852841b6b3321c0e6c0e2.tar.gz
- add proof of concept for versioning, [ticket:2861]
Diffstat (limited to 'examples')
-rw-r--r--examples/versioning/test_versioning.py32
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'