MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / test_populate_existing

Method test_populate_existing

test/orm/test_query.py:7351–7387  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

7349
7350class ExecutionOptionsTest(QueryTest):
7351 def test_populate_existing(self):
7352 User, Address = self.classes.User, self.classes.Address
7353 Order = self.classes.Order
7354
7355 s = fixture_session(autoflush=False)
7356
7357 userlist = s.query(User).all()
7358
7359 u = userlist[0]
7360 u.name = "foo"
7361 a = Address(name="ed")
7362 u.addresses.append(a)
7363
7364 self.assert_(a in u.addresses)
7365
7366 s.query(User).populate_existing().all()
7367
7368 self.assert_(u not in s.dirty)
7369
7370 self.assert_(u.name == "jack")
7371
7372 self.assert_(a not in u.addresses)
7373
7374 u.addresses[0].email_address = "lala"
7375 u.orders[1].items[2].description = "item 12"
7376 # test that lazy load doesn't change child items
7377 s.query(User).populate_existing().all()
7378 assert u.addresses[0].email_address == "lala"
7379 assert u.orders[1].items[2].description == "item 12"
7380
7381 # eager load does
7382 s.query(User).options(
7383 joinedload(User.addresses),
7384 joinedload(User.orders).joinedload(Order.items),
7385 ).populate_existing().all()
7386 assert u.addresses[0].email_address == "jack@bean.com"
7387 assert u.orders[1].items[2].description == "item 5"
7388
7389 def test_populate_existing_future(self):
7390 User, Address = self.classes.User, self.classes.Address

Callers

nothing calls this directly

Calls 10

fixture_sessionFunction · 0.90
joinedloadFunction · 0.90
populate_existingMethod · 0.80
joinedloadMethod · 0.80
AddressClass · 0.70
allMethod · 0.45
queryMethod · 0.45
appendMethod · 0.45
assert_Method · 0.45
optionsMethod · 0.45

Tested by

no test coverage detected