pytest-flask-sqlalchemy
pytest-flask-sqlalchemy copied to clipboard
Fix SesstionTransaction._connection_for_bind call. Fixes #53
trafficstars
Fixes #53 Also fixes extra savepoints from #45
_connection_for_bind caches not bind directly but conn and conn.engine
https://github.com/sqlalchemy/sqlalchemy/blob/rel_1_3_24/lib/sqlalchemy/orm/session.py#L453
because we're mocking session.bind with MagicMock it never gets into the _connections (conn.engine is an actual Engine instance in the end) and we're open nested transactions for every call of _connection_for_bind (#45) but also SA overwrite _connections on every call, thus we lose actual savepoint and always reset it to the most recent one. And because we always open transactions usually we rollback nothing.