summaryrefslogtreecommitdiff
path: root/test/orm/eager_relations.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-12-14 05:53:18 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-12-14 05:53:18 +0000
commit0df750223a5f6ee4cfa987a4abd5ab4691007350 (patch)
tree89780e200d97f36a83d30c5da45122d211cb1075 /test/orm/eager_relations.py
parent273e48c9a95825541bd461a1d5402f2e65f95876 (diff)
downloadsqlalchemy-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.py50
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)