summaryrefslogtreecommitdiff
path: root/test/ext/test_serializer.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/ext/test_serializer.py')
-rw-r--r--test/ext/test_serializer.py51
1 files changed, 34 insertions, 17 deletions
diff --git a/test/ext/test_serializer.py b/test/ext/test_serializer.py
index 84fff1304..ffeac55c1 100644
--- a/test/ext/test_serializer.py
+++ b/test/ext/test_serializer.py
@@ -1,13 +1,15 @@
+# coding: utf-8
from sqlalchemy.ext import serializer
from sqlalchemy import testing
from sqlalchemy import Integer, String, ForeignKey, select, \
- desc, func, util
+ desc, func, util, MetaData
from sqlalchemy.testing.schema import Table
from sqlalchemy.testing.schema import Column
from sqlalchemy.orm import relationship, sessionmaker, scoped_session, \
class_mapper, mapper, joinedload, configure_mappers, aliased
-from sqlalchemy.testing import eq_
+from sqlalchemy.testing import eq_, AssertsCompiledSQL
+from sqlalchemy.util import u, ue
from sqlalchemy.testing import fixtures
@@ -19,7 +21,7 @@ class Address(fixtures.ComparableEntity):
users = addresses = Session = None
-class SerializeTest(fixtures.MappedTest):
+class SerializeTest(AssertsCompiledSQL, fixtures.MappedTest):
run_setup_mappers = 'once'
run_inserts = 'once'
@@ -77,7 +79,6 @@ class SerializeTest(fixtures.MappedTest):
assert serializer.loads(serializer.dumps(User.name, -1), None,
None) is User.name
- @testing.requires.python26 # crashes in 2.5
def test_expression(self):
expr = \
select([users]).select_from(users.join(addresses)).limit(5)
@@ -124,19 +125,20 @@ class SerializeTest(fixtures.MappedTest):
eq_(q2.all(), [User(name='fred')])
eq_(list(q2.values(User.id, User.name)), [(9, 'fred')])
- @testing.requires.non_broken_pickle
- def test_query_three(self):
- ua = aliased(User)
- q = \
- Session.query(ua).join(ua.addresses).\
- filter(Address.email.like('%fred%'))
- q2 = serializer.loads(serializer.dumps(q, -1), users.metadata,
- Session)
- eq_(q2.all(), [User(name='fred')])
-
+ # fails too often/randomly
+ #@testing.requires.non_broken_pickle
+ #def test_query_three(self):
+ # ua = aliased(User)
+ # q = \
+ # Session.query(ua).join(ua.addresses).\
+ # filter(Address.email.like('%fred%'))
+ # q2 = serializer.loads(serializer.dumps(q, -1), users.metadata,
+ # Session)
+ # eq_(q2.all(), [User(name='fred')])
+ #
# try to pull out the aliased entity here...
- ua_2 = q2._entities[0].entity_zero.entity
- eq_(list(q2.values(ua_2.id, ua_2.name)), [(9, 'fred')])
+ # ua_2 = q2._entities[0].entity_zero.entity
+ # eq_(list(q2.values(ua_2.id, ua_2.name)), [(9, 'fred')])
@testing.requires.non_broken_pickle
def test_orm_join(self):
@@ -149,7 +151,6 @@ class SerializeTest(fixtures.MappedTest):
assert j2.right is j.right
assert j2._target_adapter._next
- @testing.requires.python26 # namedtuple workaround not serializable in 2.5
@testing.exclude('sqlite', '<=', (3, 5, 9),
'id comparison failing on the buildbot')
def test_aliases(self):
@@ -172,6 +173,22 @@ class SerializeTest(fixtures.MappedTest):
x = serializer.loads(ser, users.metadata)
eq_(str(r), str(x))
+ def test_unicode(self):
+ m = MetaData()
+ t = Table(ue('\u6e2c\u8a66'), m,
+ Column(ue('\u6e2c\u8a66_id'), Integer))
+
+ expr = select([t]).where(t.c[ue('\u6e2c\u8a66_id')] == 5)
+
+ expr2 = serializer.loads(serializer.dumps(expr, -1), m)
+
+ self.assert_compile(
+ expr2,
+ ue('SELECT "\u6e2c\u8a66"."\u6e2c\u8a66_id" FROM "\u6e2c\u8a66" '
+ 'WHERE "\u6e2c\u8a66"."\u6e2c\u8a66_id" = :\u6e2c\u8a66_id_1'),
+ dialect="default"
+ )
+
if __name__ == '__main__':
testing.main()