(self)
| 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_( |
nothing calls this directly
no test coverage detected