diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2017-05-22 16:25:20 -0400 |
---|---|---|
committer | Gerrit Code Review <gerrit@awstats.zzzcomputing.com> | 2017-05-22 16:25:20 -0400 |
commit | 92f789eba4a46a5c33c807c2f02c45b03cf9ee79 (patch) | |
tree | a316e2c64039f7d6fd40f827e7dcea4d18de2228 /test | |
parent | 9f0fb6c601829cb7c9f449d57e12e8b95dab51f5 (diff) | |
parent | 0a67c1305266ba9c4558e371fa9b193788c65bea (diff) | |
download | sqlalchemy-92f789eba4a46a5c33c807c2f02c45b03cf9ee79.tar.gz |
Merge "Detect no params w/ manual version_id counter and set to itself"
Diffstat (limited to 'test')
-rw-r--r-- | test/orm/test_versioning.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/test/orm/test_versioning.py b/test/orm/test_versioning.py index 40b373097..4c339d3bb 100644 --- a/test/orm/test_versioning.py +++ b/test/orm/test_versioning.py @@ -1284,3 +1284,65 @@ class ManualVersionTest(fixtures.MappedTest): sess.commit() eq_(a1.vid, 2) + + +class ManualInheritanceVersionTest(fixtures.MappedTest): + run_define_tables = 'each' + __backend__ = True + + @classmethod + def define_tables(cls, metadata): + Table( + "a", metadata, + Column( + 'id', Integer, primary_key=True, + test_needs_autoincrement=True), + Column('data', String(30)), + Column('vid', Integer, nullable=False) + ) + + Table( + "b", metadata, + Column( + 'id', Integer, ForeignKey('a.id'), primary_key=True), + Column('b_data', String(30)), + ) + + @classmethod + def setup_classes(cls): + class A(cls.Basic): + pass + + class B(A): + pass + + @classmethod + def setup_mappers(cls): + mapper( + cls.classes.A, cls.tables.a, version_id_col=cls.tables.a.c.vid, + version_id_generator=False) + + mapper( + cls.classes.B, cls.tables.b, inherits=cls.classes.A) + + def test_no_increment(self): + sess = Session() + b1 = self.classes.B() + + b1.vid = 1 + b1.data = 'd1' + sess.add(b1) + sess.commit() + + # change col on subtable only without + # incrementing version id + b1.b_data = 'bd2' + sess.commit() + + eq_(b1.vid, 1) + + b1.b_data = 'd3' + b1.vid = 2 + sess.commit() + + eq_(b1.vid, 2) |