summaryrefslogtreecommitdiff
path: root/test/orm/merge.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/orm/merge.py')
-rw-r--r--test/orm/merge.py29
1 files changed, 28 insertions, 1 deletions
diff --git a/test/orm/merge.py b/test/orm/merge.py
index 3d35397fb..e8502d891 100644
--- a/test/orm/merge.py
+++ b/test/orm/merge.py
@@ -1,7 +1,7 @@
import testenv; testenv.configure_for_tests()
from testlib import sa, testing
from testlib.sa.util import OrderedSet
-from testlib.sa.orm import mapper, relation, create_session
+from testlib.sa.orm import mapper, relation, create_session, PropComparator, synonym, comparable_property
from testlib.testing import eq_, ne_
from orm import _base, _fixtures
@@ -670,6 +670,33 @@ class MergeTest(_fixtures.FixtureTest):
except sa.exc.InvalidRequestError, e:
assert "dont_load=True option does not support" in str(e)
+ @testing.resolve_artifact_names
+ def test_synonym_comparable(self):
+ class User(object):
+
+ class Comparator(PropComparator):
+ pass
+
+ def _getValue(self):
+ return self._value
+
+ def _setValue(self, value):
+ setattr(self, '_value', value)
+
+ value = property(_getValue, _setValue)
+
+ mapper(User, users, properties={
+ 'uid':synonym('id'),
+ 'foobar':comparable_property(User.Comparator,User.value),
+ })
+
+ sess = create_session()
+ u = User()
+ u.name = 'ed'
+ sess.save(u)
+ sess.flush()
+ sess.expunge(u)
+ sess.merge(u)
if __name__ == "__main__":
testenv.main()