Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Commit df68171

Browse files
committed
Update test mockings
1 parent 2e2eb08 commit df68171

File tree

1 file changed

+50
-65
lines changed

1 file changed

+50
-65
lines changed

tests/test_model_client.py

Lines changed: 50 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,10 @@ def test_model_not_available(self, mock_get) -> None:
7373
client = OllamaClient()
7474
assert client.is_model_available() is False
7575

76-
@patch('src.utils.model_client.requests.Session')
77-
def test_model_availability_error_handling(self, mock_session_class) -> None:
76+
@patch('src.utils.model_client.requests.get')
77+
def test_model_availability_error_handling(self, mock_get) -> None:
7878
"""Test error handling in model availability check"""
79-
mock_session = MagicMock()
80-
mock_session.get.side_effect = RequestsConnectionError("Connection failed")
81-
mock_session_class.return_value = mock_session
79+
mock_get.side_effect = RequestsConnectionError("Connection failed")
8280

8381
client = OllamaClient()
8482
assert client.is_model_available() is False
@@ -87,19 +85,18 @@ def test_model_availability_error_handling(self, mock_session_class) -> None:
8785
class TestOllamaClientGenerate:
8886
"""Test response generation"""
8987

90-
@patch('src.utils.model_client.requests.Session')
91-
def test_generate_simple_response(self, mock_session_class) -> None:
88+
@patch('src.utils.model_client.requests.post')
89+
def test_generate_simple_response(self, mock_post) -> None:
9290
"""Test successful response generation"""
93-
mock_session = MagicMock()
9491
mock_response = MagicMock()
9592
mock_response.json.return_value = {
9693
"model": "gpt-oss:20b",
9794
"response": "This is a test response",
9895
"done": True,
9996
"total_duration": 1500000000,
10097
}
101-
mock_session.post.return_value = mock_response
102-
mock_session_class.return_value = mock_session
98+
mock_response.raise_for_status.return_value = None
99+
mock_post.return_value = mock_response
103100

104101
client = OllamaClient()
105102
response = client.generate("Test prompt")
@@ -110,19 +107,18 @@ def test_generate_simple_response(self, mock_session_class) -> None:
110107
assert response.error is None
111108
assert response.timed_out is False
112109

113-
@patch('src.utils.model_client.requests.Session')
114-
def test_generate_with_thinking(self, mock_session_class) -> None:
110+
@patch('src.utils.model_client.requests.post')
111+
def test_generate_with_thinking(self, mock_post) -> None:
115112
"""Test response generation with thinking tags"""
116-
mock_session = MagicMock()
117113
mock_response = MagicMock()
118114
mock_response.json.return_value = {
119115
"model": "gpt-oss:20b",
120116
"response": "<thinking>Internal thoughts</thinking>Public response",
121117
"done": True,
122118
"total_duration": 2000000000,
123119
}
124-
mock_session.post.return_value = mock_response
125-
mock_session_class.return_value = mock_session
120+
mock_response.raise_for_status.return_value = None
121+
mock_post.return_value = mock_response
126122

127123
client = OllamaClient()
128124
response = client.generate("Test prompt")
@@ -132,33 +128,30 @@ def test_generate_with_thinking(self, mock_session_class) -> None:
132128
# thinking field is set to None since extraction not implemented
133129
assert response.thinking is None or response.thinking == ""
134130

135-
@patch('src.utils.model_client.requests.Session')
136-
def test_generate_with_system_prompt(self, mock_session_class) -> None:
131+
@patch('src.utils.model_client.requests.post')
132+
def test_generate_with_system_prompt(self, mock_post) -> None:
137133
"""Test generation with system prompt"""
138-
mock_session = MagicMock()
139134
mock_response = MagicMock()
140135
mock_response.json.return_value = {
141136
"model": "gpt-oss:20b",
142137
"response": "Response with system context",
143138
"done": True,
144139
}
145-
mock_session.post.return_value = mock_response
146-
mock_session_class.return_value = mock_session
140+
mock_response.raise_for_status.return_value = None
141+
mock_post.return_value = mock_response
147142

148143
client = OllamaClient()
149144
client.generate("User prompt", "System prompt")
150145

151146
# Verify the request was made with system prompt
152-
call_args = mock_session.post.call_args
147+
call_args = mock_post.call_args
153148
assert call_args[1]['json']['system'] == "System prompt"
154149
assert call_args[1]['json']['prompt'] == "User prompt"
155150

156-
@patch('src.utils.model_client.requests.Session')
157-
def test_generate_timeout_handling(self, mock_session_class) -> None:
151+
@patch('src.utils.model_client.requests.post')
152+
def test_generate_timeout_handling(self, mock_post) -> None:
158153
"""Test timeout handling during generation"""
159-
mock_session = MagicMock()
160-
mock_session.post.side_effect = Timeout("Request timed out")
161-
mock_session_class.return_value = mock_session
154+
mock_post.side_effect = Timeout("Request timed out")
162155

163156
client = OllamaClient()
164157
response = client.generate("Test prompt")
@@ -167,12 +160,10 @@ def test_generate_timeout_handling(self, mock_session_class) -> None:
167160
assert response.timed_out is True
168161
assert response.content == ""
169162

170-
@patch('src.utils.model_client.requests.Session')
171-
def test_generate_connection_error(self, mock_session_class) -> None:
163+
@patch('src.utils.model_client.requests.post')
164+
def test_generate_connection_error(self, mock_post) -> None:
172165
"""Test connection error handling"""
173-
mock_session = MagicMock()
174-
mock_session.post.side_effect = RequestsConnectionError("Connection refused")
175-
mock_session_class.return_value = mock_session
166+
mock_post.side_effect = RequestsConnectionError("Connection refused")
176167

177168
client = OllamaClient()
178169
response = client.generate("Test prompt")
@@ -181,18 +172,17 @@ def test_generate_connection_error(self, mock_session_class) -> None:
181172
assert response.timed_out is False
182173
assert response.content == ""
183174

184-
@patch('src.utils.model_client.requests.Session')
185-
def test_generate_malformed_response(self, mock_session_class) -> None:
175+
@patch('src.utils.model_client.requests.post')
176+
def test_generate_malformed_response(self, mock_post) -> None:
186177
"""Test handling of malformed API responses"""
187-
mock_session = MagicMock()
188178
mock_response = MagicMock()
189179
# Missing 'response' key
190180
mock_response.json.return_value = {
191181
"model": "gpt-oss:20b",
192182
"done": True,
193183
}
194-
mock_session.post.return_value = mock_response
195-
mock_session_class.return_value = mock_session
184+
mock_response.raise_for_status.return_value = None
185+
mock_post.return_value = mock_response
196186

197187
client = OllamaClient()
198188
response = client.generate("Test prompt")
@@ -255,52 +245,48 @@ def test_busy_check_command_failure(self, mock_run) -> None:
255245
class TestOllamaClientHelpers:
256246
"""Test helper methods"""
257247

258-
@patch('src.utils.model_client.requests.Session')
259-
def test_make_request_get(self, mock_session_class) -> None:
248+
@patch('src.utils.model_client.requests.get')
249+
def test_make_request_get(self, mock_get) -> None:
260250
"""Test GET request helper"""
261-
mock_session = MagicMock()
262251
mock_response = MagicMock()
263252
mock_response.json.return_value = {"result": "success"}
264-
mock_session.get.return_value = mock_response
265-
mock_session_class.return_value = mock_session
253+
mock_response.raise_for_status.return_value = None
254+
mock_get.return_value = mock_response
266255

267256
client = OllamaClient()
268257
result = client._make_request("api/test", method="GET")
269258

270259
assert result == {"result": "success"}
271-
mock_session.get.assert_called_once_with(
260+
mock_get.assert_called_once_with(
272261
"http://localhost:11434/api/test",
273262
timeout=180
274263
)
275264

276-
@patch('src.utils.model_client.requests.Session')
277-
def test_make_request_post(self, mock_session_class) -> None:
265+
@patch('src.utils.model_client.requests.post')
266+
def test_make_request_post(self, mock_post) -> None:
278267
"""Test POST request helper"""
279-
mock_session = MagicMock()
280268
mock_response = MagicMock()
281269
mock_response.json.return_value = {"result": "success"}
282-
mock_session.post.return_value = mock_response
283-
mock_session_class.return_value = mock_session
270+
mock_response.raise_for_status.return_value = None
271+
mock_post.return_value = mock_response
284272

285273
client = OllamaClient()
286274
data = {"key": "value"}
287275
result = client._make_request("api/test", data=data, method="POST")
288276

289277
assert result == {"result": "success"}
290-
mock_session.post.assert_called_once_with(
278+
mock_post.assert_called_once_with(
291279
"http://localhost:11434/api/test",
292280
json=data,
293281
timeout=180
294282
)
295283

296-
@patch('src.utils.model_client.requests.Session')
297-
def test_make_request_error_handling(self, mock_session_class) -> None:
284+
@patch('src.utils.model_client.requests.post')
285+
def test_make_request_error_handling(self, mock_post) -> None:
298286
"""Test request error handling"""
299-
mock_session = MagicMock()
300287
mock_response = MagicMock()
301288
mock_response.raise_for_status.side_effect = requests.HTTPError("404 Not Found")
302-
mock_session.post.return_value = mock_response
303-
mock_session_class.return_value = mock_session
289+
mock_post.return_value = mock_response
304290

305291
client = OllamaClient()
306292

@@ -313,16 +299,16 @@ def test_make_request_error_handling(self, mock_session_class) -> None:
313299
class TestOllamaClientIntegration:
314300
"""Integration tests for complete workflows"""
315301

316-
@patch('src.utils.model_client.requests.Session')
317-
def test_full_generation_workflow(self, mock_session_class) -> None:
302+
@patch('src.utils.model_client.requests.post')
303+
@patch('src.utils.model_client.requests.get')
304+
def test_full_generation_workflow(self, mock_get, mock_post) -> None:
318305
"""Test complete generation workflow with all features"""
319-
mock_session = MagicMock()
320-
321306
# First call: check model availability
322307
availability_response = MagicMock()
323308
availability_response.json.return_value = {
324309
"models": [{"name": "gpt-oss:20b"}]
325310
}
311+
availability_response.raise_for_status.return_value = None
326312

327313
# Second call: generate response
328314
generation_response = MagicMock()
@@ -334,10 +320,10 @@ def test_full_generation_workflow(self, mock_session_class) -> None:
334320
"prompt_eval_count": 15,
335321
"eval_count": 25,
336322
}
323+
generation_response.raise_for_status.return_value = None
337324

338-
mock_session.get.return_value = availability_response
339-
mock_session.post.return_value = generation_response
340-
mock_session_class.return_value = mock_session
325+
mock_get.return_value = availability_response
326+
mock_post.return_value = generation_response
341327

342328
client = OllamaClient()
343329

@@ -356,18 +342,17 @@ def test_full_generation_workflow(self, mock_session_class) -> None:
356342
assert response.response_time > 0
357343

358344
@patch('src.utils.model_client.time.time')
359-
@patch('src.utils.model_client.requests.Session')
360-
def test_response_timing(self, mock_session_class, mock_time) -> None:
345+
@patch('src.utils.model_client.requests.post')
346+
def test_response_timing(self, mock_post, mock_time) -> None:
361347
"""Test accurate response time measurement"""
362-
mock_session = MagicMock()
363348
mock_response = MagicMock()
364349
mock_response.json.return_value = {
365350
"model": "gpt-oss:20b",
366351
"response": "Test",
367352
"done": True,
368353
}
369-
mock_session.post.return_value = mock_response
370-
mock_session_class.return_value = mock_session
354+
mock_response.raise_for_status.return_value = None
355+
mock_post.return_value = mock_response
371356

372357
# Simulate 2.5 second response time
373358
mock_time.side_effect = [0.0, 2.5]

0 commit comments

Comments
 (0)