MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_clause_onclause

Method test_clause_onclause

test/orm/test_joins.py:1326–1375  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1324 )
1325
1326 def test_clause_onclause(self):
1327 Item, Order, order_items, User = (
1328 self.classes.Item,
1329 self.classes.Order,
1330 self.tables.order_items,
1331 self.classes.User,
1332 )
1333
1334 sess = fixture_session()
1335
1336 eq_(
1337 sess.query(User)
1338 .join(Order, User.id == Order.user_id)
1339 .join(order_items, Order.id == order_items.c.order_id)
1340 .join(Item, order_items.c.item_id == Item.id)
1341 .filter(Item.description == "item 4")
1342 .all(),
1343 [User(name="jack")],
1344 )
1345
1346 eq_(
1347 sess.query(User.name)
1348 .join(Order, User.id == Order.user_id)
1349 .join(order_items, Order.id == order_items.c.order_id)
1350 .join(Item, order_items.c.item_id == Item.id)
1351 .filter(Item.description == "item 4")
1352 .all(),
1353 [("jack",)],
1354 )
1355
1356 ualias = aliased(User)
1357 eq_(
1358 sess.query(ualias.name)
1359 .join(Order, ualias.id == Order.user_id)
1360 .join(order_items, Order.id == order_items.c.order_id)
1361 .join(Item, order_items.c.item_id == Item.id)
1362 .filter(Item.description == "item 4")
1363 .all(),
1364 [("jack",)],
1365 )
1366
1367 # explicit onclause with from_self(), means
1368 # the onclause must be aliased against the query's custom
1369 # FROM object
1370 subq = sess.query(User).order_by(User.id).offset(2).subquery()
1371 ua = aliased(User, subq)
1372 eq_(
1373 sess.query(ua).join(Order, ua.id == Order.user_id).all(),
1374 [User(name="fred")],
1375 )
1376
1377 def test_str_not_accepted_orm_join(self):
1378 User, Address = self.classes.User, self.classes.Address

Callers

nothing calls this directly

Calls 11

fixture_sessionFunction · 0.90
eq_Function · 0.90
aliasedFunction · 0.90
UserClass · 0.70
allMethod · 0.45
filterMethod · 0.45
joinMethod · 0.45
queryMethod · 0.45
subqueryMethod · 0.45
offsetMethod · 0.45
order_byMethod · 0.45

Tested by

no test coverage detected