MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_aliased_classes

Method test_aliased_classes

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

Source from the content-addressed store, hash-verified

1385 outerjoin(User, Address, "addresses")
1386
1387 def test_aliased_classes(self):
1388 User, Address = self.classes.User, self.classes.Address
1389
1390 sess = fixture_session()
1391
1392 user7, user8, user9, user10 = sess.query(User).all()
1393 address1, address2, address3, address4, address5 = sess.query(
1394 Address
1395 ).all()
1396 expected = [
1397 (user7, address1),
1398 (user8, address2),
1399 (user8, address3),
1400 (user8, address4),
1401 (user9, address5),
1402 (user10, None),
1403 ]
1404
1405 q = sess.query(User)
1406 AdAlias = aliased(Address)
1407 q = q.add_entity(AdAlias).select_from(outerjoin(User, AdAlias))
1408 result = q.order_by(User.id, AdAlias.id).all()
1409 eq_(result, expected)
1410
1411 sess.expunge_all()
1412
1413 q = sess.query(User).add_entity(AdAlias)
1414 result = (
1415 q.select_from(outerjoin(User, AdAlias))
1416 .filter(AdAlias.email_address == "ed@bettyboop.com")
1417 .all()
1418 )
1419 eq_(result, [(user8, address3)])
1420
1421 result = (
1422 q.select_from(outerjoin(User, AdAlias, User.addresses))
1423 .filter(AdAlias.email_address == "ed@bettyboop.com")
1424 .all()
1425 )
1426 eq_(result, [(user8, address3)])
1427
1428 result = (
1429 q.select_from(outerjoin(User, AdAlias, User.id == AdAlias.user_id))
1430 .filter(AdAlias.email_address == "ed@bettyboop.com")
1431 .all()
1432 )
1433 eq_(result, [(user8, address3)])
1434
1435 # this is the first test where we are joining "backwards" - from
1436 # AdAlias to User even though
1437 # the query is against User
1438 q = sess.query(User, AdAlias)
1439 result = (
1440 q.join(AdAlias.user)
1441 .filter(User.name == "ed")
1442 .order_by(User.id, AdAlias.id)
1443 )
1444 eq_(

Callers

nothing calls this directly

Calls 13

fixture_sessionFunction · 0.90
aliasedFunction · 0.90
outerjoinFunction · 0.90
eq_Function · 0.90
joinFunction · 0.90
add_entityMethod · 0.80
allMethod · 0.45
queryMethod · 0.45
select_fromMethod · 0.45
order_byMethod · 0.45
expunge_allMethod · 0.45
filterMethod · 0.45

Tested by

no test coverage detected