MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_one_to_many_1

Method test_one_to_many_1

test/orm/test_unitofwork.py:1517–1575  ·  view source on GitHub ↗

Basic save of one to many.

(self)

Source from the content-addressed store, hash-verified

1515 run_inserts = None
1516
1517 def test_one_to_many_1(self):
1518 """Basic save of one to many."""
1519
1520 Address, addresses, users, User = (
1521 self.classes.Address,
1522 self.tables.addresses,
1523 self.tables.users,
1524 self.classes.User,
1525 )
1526
1527 self.mapper_registry.map_imperatively(
1528 User,
1529 users,
1530 properties=dict(
1531 addresses=relationship(
1532 self.mapper_registry.map_imperatively(Address, addresses),
1533 lazy="select",
1534 )
1535 ),
1536 )
1537 u = User(name="one2manytester")
1538 a = Address(email_address="one2many@test.org")
1539 u.addresses.append(a)
1540
1541 a2 = Address(email_address="lala@test.org")
1542 u.addresses.append(a2)
1543
1544 session = fixture_session()
1545 session.add(u)
1546 session.flush()
1547
1548 conn = session.connection()
1549 user_rows = conn.execute(
1550 users.select().where(users.c.id.in_([u.id]))
1551 ).fetchall()
1552 eq_(list(user_rows[0]), [u.id, "one2manytester"])
1553
1554 address_rows = conn.execute(
1555 addresses.select()
1556 .order_by(addresses.c.email_address)
1557 .where(
1558 addresses.c.id.in_([a.id, a2.id]),
1559 )
1560 ).fetchall()
1561 eq_(list(address_rows[0]), [a2.id, u.id, "lala@test.org"])
1562 eq_(list(address_rows[1]), [a.id, u.id, "one2many@test.org"])
1563
1564 userid = u.id
1565 addressid = a2.id
1566
1567 a2.email_address = "somethingnew@foo.com"
1568
1569 session.flush()
1570
1571 address_rows = conn.execute(
1572 addresses.select().where(addresses.c.id == addressid)
1573 ).fetchall()
1574 eq_(list(address_rows[0]), [addressid, userid, "somethingnew@foo.com"])

Callers

nothing calls this directly

Calls 15

relationshipFunction · 0.90
fixture_sessionFunction · 0.90
eq_Function · 0.90
map_imperativelyMethod · 0.80
UserClass · 0.70
AddressClass · 0.70
appendMethod · 0.45
addMethod · 0.45
flushMethod · 0.45
connectionMethod · 0.45
fetchallMethod · 0.45
executeMethod · 0.45

Tested by

no test coverage detected