MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_populate_existing

Method test_populate_existing

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

Source from the content-addressed store, hash-verified

6824
6825class ExecutionOptionsTest(QueryTest):
6826 def test_populate_existing(self):
6827 User, Address = self.classes.User, self.classes.Address
6828 Order = self.classes.Order
6829
6830 s = fixture_session(autoflush=False)
6831
6832 userlist = s.query(User).all()
6833
6834 u = userlist[0]
6835 u.name = "foo"
6836 a = Address(name="ed")
6837 u.addresses.append(a)
6838
6839 self.assert_(a in u.addresses)
6840
6841 s.query(User).populate_existing().all()
6842
6843 self.assert_(u not in s.dirty)
6844
6845 self.assert_(u.name == "jack")
6846
6847 self.assert_(a not in u.addresses)
6848
6849 u.addresses[0].email_address = "lala"
6850 u.orders[1].items[2].description = "item 12"
6851 # test that lazy load doesn't change child items
6852 s.query(User).populate_existing().all()
6853 assert u.addresses[0].email_address == "lala"
6854 assert u.orders[1].items[2].description == "item 12"
6855
6856 # eager load does
6857 s.query(User).options(
6858 joinedload(User.addresses),
6859 joinedload(User.orders).joinedload(Order.items),
6860 ).populate_existing().all()
6861 assert u.addresses[0].email_address == "jack@bean.com"
6862 assert u.orders[1].items[2].description == "item 5"
6863
6864 def test_populate_existing_future(self):
6865 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