diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-12-14 05:53:18 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-12-14 05:53:18 +0000 |
| commit | 0df750223a5f6ee4cfa987a4abd5ab4691007350 (patch) | |
| tree | 89780e200d97f36a83d30c5da45122d211cb1075 /test/orm/eager_relations.py | |
| parent | 273e48c9a95825541bd461a1d5402f2e65f95876 (diff) | |
| download | sqlalchemy-0df750223a5f6ee4cfa987a4abd5ab4691007350.tar.gz | |
- merged instances_yields branch r3908:3934, minus the "yield" part which remains slightly problematic
- cleanup of mapper._instance, query.instances(). mapper identifies objects which are part of the
current load using a app-unique id on the query context.
- attributes refactor; attributes now mostly use copy-on-modify instead of copy-on-load behavior,
simplified get_history(), added a new set of tests
- fixes to OrderedSet such that difference(), intersection() and others can accept an iterator
- OrderedIdentitySet passes in OrderedSet to the IdentitySet superclass for usage in difference/intersection/etc. operations so that these methods actually work with ordering behavior.
- query.order_by() takes into account aliased joins, i.e. query.join('orders', aliased=True).order_by(Order.id)
- cleanup etc.
Diffstat (limited to 'test/orm/eager_relations.py')
| -rw-r--r-- | test/orm/eager_relations.py | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/test/orm/eager_relations.py b/test/orm/eager_relations.py index 192eafaed..7a822234c 100644 --- a/test/orm/eager_relations.py +++ b/test/orm/eager_relations.py @@ -545,24 +545,44 @@ class AddEntityTest(FixtureTest): def _assert_result(self): return [ ( - User(id=7, addresses=[Address(id=1)]), - Order(id=1, items=[Item(id=1), Item(id=2), Item(id=3)]), + User(id=7, + addresses=[Address(id=1)] + ), + Order(id=1, + items=[Item(id=1), Item(id=2), Item(id=3)] + ), ), ( - User(id=7, addresses=[Address(id=1)]), - Order(id=3, items=[Item(id=3), Item(id=4), Item(id=5)]), + User(id=7, + addresses=[Address(id=1)] + ), + Order(id=3, + items=[Item(id=3), Item(id=4), Item(id=5)] + ), ), ( - User(id=7, addresses=[Address(id=1)]), - Order(id=5, items=[Item(id=5)]), + User(id=7, + addresses=[Address(id=1)] + ), + Order(id=5, + items=[Item(id=5)] + ), ), ( - User(id=9, addresses=[Address(id=5)]), - Order(id=2, items=[Item(id=1), Item(id=2), Item(id=3)]), + User(id=9, + addresses=[Address(id=5)] + ), + Order(id=2, + items=[Item(id=1), Item(id=2), Item(id=3)] + ), ), ( - User(id=9, addresses=[Address(id=5)]), - Order(id=4, items=[Item(id=1), Item(id=5)]), + User(id=9, + addresses=[Address(id=5)] + ), + Order(id=4, + items=[Item(id=1), Item(id=5)] + ), ) ] @@ -573,14 +593,14 @@ class AddEntityTest(FixtureTest): }) mapper(Address, addresses) mapper(Order, orders, properties={ - 'items':relation(Item, secondary=order_items, lazy=False) + 'items':relation(Item, secondary=order_items, lazy=False, order_by=items.c.id) }) mapper(Item, items) sess = create_session() def go(): - ret = sess.query(User).add_entity(Order).join('orders', aliased=True).all() + ret = sess.query(User).add_entity(Order).join('orders', aliased=True).order_by(User.id).order_by(Order.id).all() self.assertEquals(ret, self._assert_result()) self.assert_sql_count(testbase.db, go, 1) @@ -591,20 +611,20 @@ class AddEntityTest(FixtureTest): }) mapper(Address, addresses) mapper(Order, orders, properties={ - 'items':relation(Item, secondary=order_items) + 'items':relation(Item, secondary=order_items, order_by=items.c.id) }) mapper(Item, items) sess = create_session() def go(): - ret = sess.query(User).options(eagerload('addresses')).add_entity(Order).join('orders', aliased=True).all() + ret = sess.query(User).options(eagerload('addresses')).add_entity(Order).join('orders', aliased=True).order_by(User.id).order_by(Order.id).all() self.assertEquals(ret, self._assert_result()) self.assert_sql_count(testbase.db, go, 6) sess.clear() def go(): - ret = sess.query(User).options(eagerload('addresses')).add_entity(Order).options(eagerload('items', Order)).join('orders', aliased=True).all() + ret = sess.query(User).options(eagerload('addresses')).add_entity(Order).options(eagerload('items', Order)).join('orders', aliased=True).order_by(User.id).order_by(Order.id).all() self.assertEquals(ret, self._assert_result()) self.assert_sql_count(testbase.db, go, 1) |
