(self, no_items=False)
| 1194 | self._run_double_test() |
| 1195 | |
| 1196 | def _run_double_test(self, no_items=False): |
| 1197 | User, Address, Order, Item = self.classes( |
| 1198 | "User", "Address", "Order", "Item" |
| 1199 | ) |
| 1200 | q = fixture_session().query(User).order_by(User.id) |
| 1201 | |
| 1202 | def items(*ids): |
| 1203 | if no_items: |
| 1204 | return {} |
| 1205 | else: |
| 1206 | return {"items": [Item(id=id_) for id_ in ids]} |
| 1207 | |
| 1208 | def go(): |
| 1209 | eq_( |
| 1210 | [ |
| 1211 | User( |
| 1212 | id=7, |
| 1213 | addresses=[Address(id=1)], |
| 1214 | open_orders=[Order(id=3, **items(3, 4, 5))], |
| 1215 | closed_orders=[ |
| 1216 | Order(id=1, **items(1, 2, 3)), |
| 1217 | Order(id=5, **items(5)), |
| 1218 | ], |
| 1219 | ), |
| 1220 | User( |
| 1221 | id=8, |
| 1222 | addresses=[ |
| 1223 | Address(id=2), |
| 1224 | Address(id=3), |
| 1225 | Address(id=4), |
| 1226 | ], |
| 1227 | open_orders=[], |
| 1228 | closed_orders=[], |
| 1229 | ), |
| 1230 | User( |
| 1231 | id=9, |
| 1232 | addresses=[Address(id=5)], |
| 1233 | open_orders=[Order(id=4, **items(1, 5))], |
| 1234 | closed_orders=[Order(id=2, **items(1, 2, 3))], |
| 1235 | ), |
| 1236 | User(id=10), |
| 1237 | ], |
| 1238 | q.all(), |
| 1239 | ) |
| 1240 | |
| 1241 | if no_items: |
| 1242 | self.assert_sql_count(testing.db, go, 4) |
| 1243 | else: |
| 1244 | self.assert_sql_count(testing.db, go, 6) |
| 1245 | |
| 1246 | @testing.combinations( |
| 1247 | ("plain",), ("cte", testing.requires.ctes), ("subquery",), id_="s" |
no test coverage detected