summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-06-05 02:31:53 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-06-05 02:31:53 +0000
commitf8314ef9ff08af5f104731de402d6e6bd8c043f3 (patch)
tree22520019a71251e76b6f64af9709c92ee3bd0f03 /test
parent7e5b3d2f9fd69924ac2cf588e60508975588aa28 (diff)
downloadsqlalchemy-f8314ef9ff08af5f104731de402d6e6bd8c043f3.tar.gz
improvements/fixes to session cascade iteration,
fixes to entity_name propigation
Diffstat (limited to 'test')
-rw-r--r--test/entity.py42
-rw-r--r--test/inheritance3.py2
-rw-r--r--test/objectstore.py2
3 files changed, 45 insertions, 1 deletions
diff --git a/test/entity.py b/test/entity.py
index 22e74f171..f425c5c8e 100644
--- a/test/entity.py
+++ b/test/entity.py
@@ -82,6 +82,48 @@ class EntityTest(AssertMixin):
assert u1list[0] is not u2list[0]
assert len(u1list[0].addresses) == len(u2list[0].addresses) == 1
+ def testcascade(self):
+ """same as testbasic but relies on session cascading"""
+ class User(object):pass
+ class Address(object):pass
+
+ a1mapper = mapper(Address, address1, entity_name='address1')
+ a2mapper = mapper(Address, address2, entity_name='address2')
+ u1mapper = mapper(User, user1, entity_name='user1', properties ={
+ 'addresses':relation(a1mapper)
+ })
+ u2mapper =mapper(User, user2, entity_name='user2', properties={
+ 'addresses':relation(a2mapper)
+ })
+
+ sess = create_session()
+ u1 = User()
+ u1.name = 'this is user 1'
+ sess.save(u1, entity_name='user1')
+ a1 = Address()
+ a1.email='a1@foo.com'
+ u1.addresses.append(a1)
+
+ u2 = User()
+ u2.name='this is user 2'
+ a2 = Address()
+ a2.email='a2@foo.com'
+ u2.addresses.append(a2)
+ sess.save(u2, entity_name='user2')
+
+ sess.flush()
+ assert user1.select().execute().fetchall() == [(u1.user_id, u1.name)]
+ assert user2.select().execute().fetchall() == [(u2.user_id, u2.name)]
+ assert address1.select().execute().fetchall() == [(u1.user_id, a1.user_id, 'a1@foo.com')]
+ assert address2.select().execute().fetchall() == [(u2.user_id, a2.user_id, 'a2@foo.com')]
+
+ sess.clear()
+ u1list = sess.query(User, entity_name='user1').select()
+ u2list = sess.query(User, entity_name='user2').select()
+ assert len(u1list) == len(u2list) == 1
+ assert u1list[0] is not u2list[0]
+ assert len(u1list[0].addresses) == len(u2list[0].addresses) == 1
+
def testpolymorphic(self):
"""tests that entity_name can be used to have two kinds of relations on the same class."""
class User(object):pass
diff --git a/test/inheritance3.py b/test/inheritance3.py
index 15c93e7b2..2f029e64f 100644
--- a/test/inheritance3.py
+++ b/test/inheritance3.py
@@ -14,7 +14,7 @@ class Issue(BaseObject):
class Location(BaseObject):
def __repr__(self):
- return "%s(%s, %s)" % (self.__class__.__name__, repr(self.issue_id), repr(str(self._name.name)))
+ return "%s(%s, %s)" % (self.__class__.__name__, str(self.issue_id), repr(str(self._name.name)))
def _get_name(self):
return self._name
diff --git a/test/objectstore.py b/test/objectstore.py
index ef20bbdbe..442ee9f4d 100644
--- a/test/objectstore.py
+++ b/test/objectstore.py
@@ -288,7 +288,9 @@ class PrivateAttrTest(SessionTest):
ctx.current.flush([a])
ctx.current.delete(a)
+ print ctx.current.deleted
ctx.current.flush([a])
+# ctx.current.flush()
assert b_table.count().scalar() == 0