(self)
| 2411 | ) |
| 2412 | |
| 2413 | def test_multi_mappers(self): |
| 2414 | Address, addresses, users, User = ( |
| 2415 | self.classes.Address, |
| 2416 | self.tables.addresses, |
| 2417 | self.tables.users, |
| 2418 | self.classes.User, |
| 2419 | ) |
| 2420 | |
| 2421 | test_session = fixture_session() |
| 2422 | |
| 2423 | user7, user8, user9, user10 = test_session.query(User).all() |
| 2424 | ( |
| 2425 | address1, |
| 2426 | address2, |
| 2427 | address3, |
| 2428 | address4, |
| 2429 | address5, |
| 2430 | ) = test_session.query(Address).all() |
| 2431 | |
| 2432 | expected = [ |
| 2433 | (user7, address1), |
| 2434 | (user8, address2), |
| 2435 | (user8, address3), |
| 2436 | (user8, address4), |
| 2437 | (user9, address5), |
| 2438 | (user10, None), |
| 2439 | ] |
| 2440 | |
| 2441 | sess = fixture_session(future=True) |
| 2442 | |
| 2443 | selectquery = ( |
| 2444 | users.outerjoin(addresses) |
| 2445 | .select() |
| 2446 | .order_by(users.c.id, addresses.c.id) |
| 2447 | ) |
| 2448 | |
| 2449 | result = sess.execute( |
| 2450 | select(User, Address).from_statement(selectquery) |
| 2451 | ) |
| 2452 | eq_( |
| 2453 | list(result), |
| 2454 | expected, |
| 2455 | ) |
| 2456 | sess.expunge_all() |
| 2457 | |
| 2458 | for address_entity in (Address, aliased(Address)): |
| 2459 | q = ( |
| 2460 | sess.query(User) |
| 2461 | .add_entity(address_entity) |
| 2462 | .outerjoin(address_entity, User.addresses) |
| 2463 | .order_by(User.id, address_entity.id) |
| 2464 | ) |
| 2465 | eq_(q.all(), expected) |
| 2466 | sess.expunge_all() |
| 2467 | |
| 2468 | q = sess.query(User).add_entity(address_entity) |
| 2469 | q = q.join(address_entity, User.addresses) |
| 2470 | q = q.filter_by(email_address="ed@bettyboop.com") |
nothing calls this directly
no test coverage detected