Skip to content

Commit 7e12e80

Browse files
committed
Make sure tests for async session removal cover all scenarios
1 parent b283a98 commit 7e12e80

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

tests/session_handler/test_session_lifecycle.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,26 @@ def test_session_is_removed_on_cleanup_even_if_loop_is_not_running(sa_manager):
4747
mocked_close.assert_called_once()
4848

4949

50+
def test_session_is_removed_on_cleanup_even_if_loop_search_errors_out(sa_manager):
51+
# Running the test without a loop will trigger the loop creation
52+
sh = AsyncSessionHandler(sa_manager.get_bind("async"))
53+
original_session_remove = sh.scoped_session.remove
54+
55+
with patch.object(
56+
sh.scoped_session,
57+
"remove",
58+
wraps=original_session_remove,
59+
) as mocked_close, patch(
60+
"asyncio.get_event_loop",
61+
side_effect=RuntimeError(),
62+
) as mocked_get_event_loop:
63+
# This should trigger the garbage collector and close the session
64+
sh = None
65+
66+
mocked_get_event_loop.assert_called_once()
67+
mocked_close.assert_called_once()
68+
69+
5070
@pytest.mark.parametrize("read_only_flag", [True, False])
5171
async def test_commit_is_called_only_if_not_read_only(
5272
read_only_flag,

0 commit comments

Comments
 (0)