diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-05 02:31:53 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-05 02:31:53 +0000 |
| commit | f8314ef9ff08af5f104731de402d6e6bd8c043f3 (patch) | |
| tree | 22520019a71251e76b6f64af9709c92ee3bd0f03 /test | |
| parent | 7e5b3d2f9fd69924ac2cf588e60508975588aa28 (diff) | |
| download | sqlalchemy-f8314ef9ff08af5f104731de402d6e6bd8c043f3.tar.gz | |
improvements/fixes to session cascade iteration,
fixes to entity_name propigation
Diffstat (limited to 'test')
| -rw-r--r-- | test/entity.py | 42 | ||||
| -rw-r--r-- | test/inheritance3.py | 2 | ||||
| -rw-r--r-- | test/objectstore.py | 2 |
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 |
