7
7
from sqlalchemy.orm.collections import collection, attribute_mapped_collection
8
8
from sqlalchemy.ext.associationproxy import *
9
9
from sqlalchemy.ext.associationproxy import _AssociationList
10
from test.lib import *
11
from test.lib.testing import assert_raises_message
12
from test.lib.util import gc_collect
10
from sqlalchemy.testing import assert_raises_message
11
from sqlalchemy.testing.util import gc_collect
13
12
from sqlalchemy.sql import not_
14
from test.lib import fixtures
13
from sqlalchemy.testing import fixtures, AssertsCompiledSQL
14
from sqlalchemy import testing
15
from sqlalchemy.testing.schema import Table, Column
17
17
class DictCollection(dict):
18
18
@collection.appender
971
971
p.kids.extend(['c1', 'c2'])
972
972
r1 = pickle.loads(pickle.dumps(p))
973
973
assert r1.kids == ['c1', 'c2']
974
r2 = pickle.loads(pickle.dumps(p.kids))
975
assert r2 == ['c1', 'c2']
975
# can't do this without parent having a cycle
976
#r2 = pickle.loads(pickle.dumps(p.kids))
977
#assert r2 == ['c1', 'c2']
977
979
def test_pickle_set(self):
978
980
mapper(Parent, self.parents,
983
985
p.kids.update(['c1', 'c2'])
984
986
r1 = pickle.loads(pickle.dumps(p))
985
987
assert r1.kids == set(['c1', 'c2'])
986
r2 = pickle.loads(pickle.dumps(p.kids))
987
assert r2 == set(['c1', 'c2'])
989
# can't do this without parent having a cycle
990
#r2 = pickle.loads(pickle.dumps(p.kids))
991
#assert r2 == set(['c1', 'c2'])
989
993
def test_pickle_dict(self):
990
994
mapper(Parent, self.parents,
997
1001
assert p.kids == {'c1': 'c1', 'c2': 'c2'}
998
1002
r1 = pickle.loads(pickle.dumps(p))
999
1003
assert r1.kids == {'c1': 'c1', 'c2': 'c2'}
1000
r2 = pickle.loads(pickle.dumps(p.kids))
1001
assert r2 == {'c1': 'c1', 'c2': 'c2'}
1005
# can't do this without parent having a cycle
1006
#r2 = pickle.loads(pickle.dumps(p.kids))
1007
#assert r2 == {'c1': 'c1', 'c2': 'c2'}
1003
1009
class PickleKeyFunc(object):
1004
1010
def __init__(self, name):
1257
1263
def test_filter_scalar_contains_fails_nul_nul(self):
1258
1264
Keyword = self.classes.Keyword
1260
assert_raises(exceptions.InvalidRequestError, lambda : \
1266
assert_raises(exc.InvalidRequestError, lambda : \
1261
1267
Keyword.user.contains(self.u))
1263
1269
def test_filter_scalar_any_fails_nul_nul(self):
1264
1270
Keyword = self.classes.Keyword
1266
assert_raises(exceptions.InvalidRequestError, lambda : \
1272
assert_raises(exc.InvalidRequestError, lambda : \
1267
1273
Keyword.user.any(name='user2'))
1269
1275
def test_filter_collection_has_fails_ul_nul(self):
1270
1276
User = self.classes.User
1272
assert_raises(exceptions.InvalidRequestError, lambda : \
1278
assert_raises(exc.InvalidRequestError, lambda : \
1273
1279
User.keywords.has(keyword='quick'))
1275
1281
def test_filter_collection_eq_fails_ul_nul(self):
1276
1282
User = self.classes.User
1278
assert_raises(exceptions.InvalidRequestError, lambda : \
1284
assert_raises(exc.InvalidRequestError, lambda : \
1279
1285
User.keywords == self.kw)
1281
1287
def test_filter_collection_ne_fails_ul_nul(self):
1282
1288
User = self.classes.User
1284
assert_raises(exceptions.InvalidRequestError, lambda : \
1290
assert_raises(exc.InvalidRequestError, lambda : \
1285
1291
User.keywords != self.kw)
1287
1293
def test_join_separate_attr(self):