(
self, statement, expected_get_bind_args, expected_engine_name
)
| 413 | ), |
| 414 | ) |
| 415 | def test_bind_through_execute( |
| 416 | self, statement, expected_get_bind_args, expected_engine_name |
| 417 | ): |
| 418 | users, Address, addresses, User = ( |
| 419 | self.tables.users, |
| 420 | self.classes.Address, |
| 421 | self.tables.addresses, |
| 422 | self.classes.User, |
| 423 | ) |
| 424 | |
| 425 | self.mapper_registry.map_imperatively( |
| 426 | User, users, properties={"addresses": relationship(Address)} |
| 427 | ) |
| 428 | self.mapper_registry.map_imperatively(Address, addresses) |
| 429 | |
| 430 | e1 = engines.testing_engine() |
| 431 | e2 = engines.testing_engine() |
| 432 | e3 = engines.testing_engine() |
| 433 | |
| 434 | canary = mock.Mock() |
| 435 | |
| 436 | class GetBindSession(Session): |
| 437 | def _connection_for_bind(self, bind, **kw): |
| 438 | canary._connection_for_bind(bind, **kw) |
| 439 | return mock.Mock() |
| 440 | |
| 441 | def get_bind(self, **kw): |
| 442 | canary.get_bind(**kw) |
| 443 | return Session.get_bind(self, **kw) |
| 444 | |
| 445 | sess = GetBindSession(e3) |
| 446 | sess.bind_mapper(User, e1) |
| 447 | sess.bind_mapper(Address, e2) |
| 448 | |
| 449 | lambda_args = dict( |
| 450 | session=sess, |
| 451 | User=User, |
| 452 | Address=Address, |
| 453 | e1=e1, |
| 454 | e2=e2, |
| 455 | e3=e3, |
| 456 | addresses=addresses, |
| 457 | ) |
| 458 | statement = testing.resolve_lambda(statement, **lambda_args) |
| 459 | |
| 460 | expected_get_bind_args = testing.resolve_lambda( |
| 461 | expected_get_bind_args, **lambda_args |
| 462 | ) |
| 463 | |
| 464 | engine = {"e1": e1, "e2": e2, "e3": e3}[expected_engine_name] |
| 465 | |
| 466 | with ( |
| 467 | mock.patch( |
| 468 | "sqlalchemy.orm.context._ORMCompileState." |
| 469 | "orm_setup_cursor_result" |
| 470 | ), |
| 471 | mock.patch( |
| 472 | "sqlalchemy.orm.context._ORMCompileState.orm_execute_statement" |
nothing calls this directly
no test coverage detected