@@ -85,9 +85,13 @@ def test_generate_commit_message_success(ai_service, mock_git_file):
8585 "usage" : {"prompt_tokens" : 100 , "completion_tokens" : 50 , "total_tokens" : 150 },
8686 }
8787
88- ai_service .session .post = MagicMock (return_value = MagicMock (status_code = 200 , json = lambda : mock_response ))
88+ ai_service .session .post = MagicMock (
89+ return_value = MagicMock (status_code = 200 , json = lambda : mock_response )
90+ )
8991
90- suggestion , usage = ai_service .generate_commit_message ("test diff" , [mock_git_file ("test.py" )])
92+ suggestion , usage = ai_service .generate_commit_message (
93+ "test diff" , [mock_git_file ("test.py" )]
94+ )
9195
9296 assert isinstance (suggestion , CommitSuggestion )
9397 assert suggestion .title == "✨ feat: add new feature"
@@ -97,7 +101,9 @@ def test_generate_commit_message_success(ai_service, mock_git_file):
97101def test_generate_commit_message_api_error (ai_service , mock_git_file ):
98102 """Test handling of API errors."""
99103 ai_service .session .post = MagicMock (
100- return_value = MagicMock (status_code = 400 , json = lambda : {"error" : {"message" : "API Error" }})
104+ return_value = MagicMock (
105+ status_code = 400 , json = lambda : {"error" : {"message" : "API Error" }}
106+ )
101107 )
102108
103109 with pytest .raises (ValueError ) as exc_info :
@@ -113,7 +119,9 @@ def test_generate_commit_message_invalid_json(ai_service, mock_git_file):
113119 "usage" : {"prompt_tokens" : 100 , "completion_tokens" : 50 , "total_tokens" : 150 },
114120 }
115121
116- ai_service .session .post = MagicMock (return_value = MagicMock (status_code = 200 , json = lambda : mock_response ))
122+ ai_service .session .post = MagicMock (
123+ return_value = MagicMock (status_code = 200 , json = lambda : mock_response )
124+ )
117125
118126 with pytest .raises (ValueError ) as exc_info :
119127 ai_service .generate_commit_message ("test diff" , [mock_git_file ("test.py" )])
@@ -123,7 +131,9 @@ def test_generate_commit_message_invalid_json(ai_service, mock_git_file):
123131
124132def test_generate_commit_message_network_error (ai_service , mock_git_file ):
125133 """Test handling of network errors."""
126- ai_service .session .post = MagicMock (side_effect = requests .exceptions .RequestException ("Network Error" ))
134+ ai_service .session .post = MagicMock (
135+ side_effect = requests .exceptions .RequestException ("Network Error" )
136+ )
127137
128138 with pytest .raises (ValueError ) as exc_info :
129139 ai_service .generate_commit_message ("test diff" , [mock_git_file ("test.py" )])
@@ -141,7 +151,12 @@ def test_generate_commit_message_retries(mock_sleep, ai_service, mock_git_file):
141151 "content" : json .dumps (
142152 {
143153 "title" : "✨ feat: retry success" ,
144- "body" : {"Features" : {"emoji" : "✨" , "changes" : ["Added new functionality" ]}},
154+ "body" : {
155+ "Features" : {
156+ "emoji" : "✨" ,
157+ "changes" : ["Added new functionality" ],
158+ }
159+ },
145160 "summary" : "Added new feature" ,
146161 }
147162 )
@@ -156,7 +171,9 @@ def test_generate_commit_message_retries(mock_sleep, ai_service, mock_git_file):
156171 MagicMock (status_code = 200 , json = lambda : mock_response ),
157172 ]
158173 )
159- suggestion , _ = ai_service .generate_commit_message ("diff" , [mock_git_file ("test.py" )])
174+ suggestion , _ = ai_service .generate_commit_message (
175+ "diff" , [mock_git_file ("test.py" )]
176+ )
160177 assert suggestion .title == "✨ feat: retry success"
161178 assert ai_service .session .post .call_count == 2
162179
@@ -182,3 +199,17 @@ def test_ai_service_missing_api_key():
182199 AIService (api_key = None )
183200
184201 assert "API key is required" in str (exc_info .value )
202+
203+
204+ @patch ("time.sleep" , return_value = None )
205+ def test_generate_commit_message_retries_exhausted (
206+ mock_sleep , ai_service , mock_git_file
207+ ):
208+ """Should raise error after exhausting all retries."""
209+ ai_service .session .post = MagicMock (
210+ side_effect = requests .exceptions .RequestException ("temp" )
211+ )
212+ with pytest .raises (ValueError ) as exc_info :
213+ ai_service .generate_commit_message ("diff" , [mock_git_file ("test.py" )])
214+ assert "API Request failed" in str (exc_info .value )
215+ assert ai_service .session .post .call_count == 3
0 commit comments