summaryrefslogtreecommitdiff
path: root/test/orm/test_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/orm/test_utils.py')
-rw-r--r--test/orm/test_utils.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/test/orm/test_utils.py b/test/orm/test_utils.py
index 45dd2e38b..e47fc3f26 100644
--- a/test/orm/test_utils.py
+++ b/test/orm/test_utils.py
@@ -3,6 +3,7 @@ from sqlalchemy import inspect
from sqlalchemy import Integer
from sqlalchemy import MetaData
from sqlalchemy import Table
+from sqlalchemy import util
from sqlalchemy.ext.hybrid import hybrid_method
from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.orm import aliased
@@ -743,6 +744,62 @@ class PathRegistryTest(_fixtures.FixtureTest):
eq_(p2.serialize(), [(User, "addresses"), (Address, None)])
eq_(p3.serialize(), [(User, "addresses")])
+ def test_serialize_context_dict(self):
+ reg = util.OrderedDict()
+ umapper = inspect(self.classes.User)
+ amapper = inspect(self.classes.Address)
+
+ p1 = PathRegistry.coerce((umapper, umapper.attrs.addresses))
+ p2 = PathRegistry.coerce((umapper, umapper.attrs.addresses, amapper))
+ p3 = PathRegistry.coerce((amapper, amapper.attrs.email_address))
+
+ p1.set(reg, "p1key", "p1value")
+ p2.set(reg, "p2key", "p2value")
+ p3.set(reg, "p3key", "p3value")
+ eq_(
+ reg,
+ {
+ ("p1key", p1.path): "p1value",
+ ("p2key", p2.path): "p2value",
+ ("p3key", p3.path): "p3value",
+ },
+ )
+
+ serialized = PathRegistry.serialize_context_dict(
+ reg, ("p1key", "p2key")
+ )
+ eq_(
+ serialized,
+ [
+ (("p1key", p1.serialize()), "p1value"),
+ (("p2key", p2.serialize()), "p2value"),
+ ],
+ )
+
+ def test_deseralize_context_dict(self):
+ umapper = inspect(self.classes.User)
+ amapper = inspect(self.classes.Address)
+
+ p1 = PathRegistry.coerce((umapper, umapper.attrs.addresses))
+ p2 = PathRegistry.coerce((umapper, umapper.attrs.addresses, amapper))
+ p3 = PathRegistry.coerce((amapper, amapper.attrs.email_address))
+
+ serialized = [
+ (("p1key", p1.serialize()), "p1value"),
+ (("p2key", p2.serialize()), "p2value"),
+ (("p3key", p3.serialize()), "p3value"),
+ ]
+ deserialized = PathRegistry.deserialize_context_dict(serialized)
+
+ eq_(
+ deserialized,
+ {
+ ("p1key", p1.path): "p1value",
+ ("p2key", p2.path): "p2value",
+ ("p3key", p3.path): "p3value",
+ },
+ )
+
def test_deseralize(self):
User = self.classes.User
Address = self.classes.Address