11import sys
22from unittest .mock import MagicMock
3+ import pytest
34
45# ---------------------------------------------------------------------------
56# Prepare stub modules and objects BEFORE importing the module under test.
@@ -118,13 +119,19 @@ def test_add_mapping_id_success(monkeypatch):
118119
119120def test_add_mapping_id_exception (monkeypatch ):
120121 # get_db_session will raise _SQLAlchemyError to simulate DB failure.
121- def _boom ():
122- raise _SQLAlchemyError ("DB down" )
122+ # Simulate that entering the context raises SQLAlchemyError
123+ class _CM :
124+ def __enter__ (self ):
125+ raise _SQLAlchemyError ("DB down" )
123126
124- monkeypatch .setattr (partner_db , 'get_db_session' , _boom )
127+ def __exit__ (self , exc_type , exc , tb ):
128+ return False
125129
126- # Function should catch the error and simply return None without raising.
127- assert partner_db .add_mapping_id (1 , 'e' , 't' , 'u' ) is None
130+ monkeypatch .setattr (partner_db , 'get_db_session' , lambda : _CM ())
131+
132+ # Function should propagate the exception; verify it raises.
133+ with pytest .raises (_SQLAlchemyError ):
134+ partner_db .add_mapping_id (1 , 'e' , 't' , 'u' )
128135
129136
130137# ---------------------------------------------------------------------------
@@ -164,11 +171,17 @@ def test_get_internal_id_by_external_not_found(monkeypatch):
164171
165172
166173def test_get_internal_id_by_external_exception (monkeypatch ):
167- def _boom ():
168- raise _SQLAlchemyError ("fail" )
174+ # Prepare context manager that raises inside __enter__
175+ class _CM :
176+ def __enter__ (self ):
177+ raise _SQLAlchemyError ("fail" )
178+
179+ def __exit__ (self , exc_type , exc , tb ):
180+ return False
169181
170- monkeypatch .setattr (partner_db , 'get_db_session' , _boom )
171- assert partner_db .get_internal_id_by_external ('any' ) is None
182+ monkeypatch .setattr (partner_db , 'get_db_session' , lambda : _CM ())
183+ with pytest .raises (_SQLAlchemyError ):
184+ partner_db .get_internal_id_by_external ('any' )
172185
173186
174187# ---------------------------------------------------------------------------
@@ -206,5 +219,13 @@ def test_get_external_id_by_internal_not_found(monkeypatch):
206219
207220
208221def test_get_external_id_by_internal_exception (monkeypatch ):
209- monkeypatch .setattr (partner_db , 'get_db_session' , lambda : (_ for _ in ()).throw (_SQLAlchemyError ()))
210- assert partner_db .get_external_id_by_internal (1 ) is None
222+ class _CM :
223+ def __enter__ (self ):
224+ raise _SQLAlchemyError ()
225+
226+ def __exit__ (self , exc_type , exc , tb ):
227+ return False
228+
229+ monkeypatch .setattr (partner_db , 'get_db_session' , lambda : _CM ())
230+ with pytest .raises (_SQLAlchemyError ):
231+ partner_db .get_external_id_by_internal (1 )
0 commit comments