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