Skip to content

Commit 2bf0ea3

Browse files
fix: replace incorrect patch usage with sys.modules patching in realtime tests
- Replace patch('praisonaiui.features.realtime.openai') with patch.dict(sys.modules, {'openai': ...}) - Fixes 3 failing tests: test_session_lifecycle_without_openai, test_session_lifecycle_with_mocked_openai, test_health_with_openai - Preserves lazy-import invariant by not adding module-level openai import Co-authored-by: Mervin Praison <MervinPraison@users.noreply.github.com>
1 parent 83962f8 commit 2bf0ea3

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

tests/unit/test_realtime.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,20 +78,20 @@ class TestSessionLifecycle:
7878
@pytest.mark.asyncio
7979
async def test_session_lifecycle_without_openai(self):
8080
"""Test session lifecycle when OpenAI SDK not available."""
81+
import sys
8182
manager = OpenAIRealtimeManager()
8283

83-
# Mock ImportError for openai package
84-
with patch('praisonaiui.features.realtime.openai', None):
85-
# Mock import to raise ImportError
86-
with patch('builtins.__import__', side_effect=ImportError("No module named 'openai'")):
87-
session_info = await manager.create_session()
88-
89-
assert session_info["type"] == "error"
90-
assert "openai package not installed" in session_info["error"]
84+
# Force `import openai` inside the function body to fail
85+
with patch.dict(sys.modules, {"openai": None}):
86+
session_info = await manager.create_session()
87+
88+
assert session_info["type"] == "error"
89+
assert "openai package not installed" in session_info["error"]
9190

9291
@pytest.mark.asyncio
9392
async def test_session_lifecycle_with_mocked_openai(self):
9493
"""Test full session lifecycle with mocked OpenAI."""
94+
import sys
9595
manager = OpenAIRealtimeManager()
9696

9797
# Mock OpenAI client and response
@@ -103,7 +103,7 @@ async def test_session_lifecycle_with_mocked_openai(self):
103103
mock_client.realtime.sessions.create = AsyncMock(return_value=mock_response)
104104
mock_openai.OpenAI.return_value = mock_client
105105

106-
with patch('praisonaiui.features.realtime.openai', mock_openai):
106+
with patch.dict(sys.modules, {"openai": mock_openai}):
107107
# Create session
108108
session_info = await manager.create_session(model="gpt-4o-realtime-preview")
109109

@@ -170,14 +170,15 @@ def test_health_without_openai(self):
170170

171171
def test_health_with_openai(self):
172172
"""Test health when OpenAI is available."""
173+
import sys
173174
manager = OpenAIRealtimeManager()
174175

175176
# Add some sessions to test counter
176177
manager._sessions["session_1"] = {"id": "session_1"}
177178
manager._sessions["session_2"] = {"id": "session_2"}
178179

179180
mock_openai = mock.MagicMock()
180-
with patch('praisonaiui.features.realtime.openai', mock_openai):
181+
with patch.dict(sys.modules, {"openai": mock_openai}):
181182
health = manager.health()
182183

183184
assert health["status"] == "ok"

0 commit comments

Comments
 (0)