11import json
22import pytest
33import responses
4+ import requests
5+
46from unittest .mock import Mock , patch
57
68from src .thecompaniesapi import Client , HttpClient , ApiError
@@ -154,8 +156,26 @@ def test_request_error_handling(self):
154156
155157 client = HttpClient (api_token = "test-token" )
156158
157- with pytest .raises (ApiError , match = "Request failed" ):
159+ with pytest .raises (ApiError , match = "Request failed" ) as exc_info :
160+ client .get ("/v2/error" )
161+ assert exc_info .value .status_code == 404
162+
163+ @responses .activate
164+ def test_request_error_timeout_handling (self ):
165+ """Test error handling for HTTP errors."""
166+ responses .add (
167+ responses .GET ,
168+ "https://api.thecompaniesapi.com/v2/error" ,
169+ body = requests .exceptions .Timeout () # Simulate a request failure
170+ )
171+
172+ client = HttpClient (api_token = "test-token" )
173+
174+ try :
158175 client .get ("/v2/error" )
176+ except Exception as e :
177+ assert e .status_code is None
178+
159179
160180 @responses .activate
161181 def test_non_json_response (self ):
@@ -255,4 +275,15 @@ def test_api_error_creation(self):
255275 assert str (error ) == "Test error message"
256276
257277 with pytest .raises (ApiError , match = "Test error message" ):
258- raise error
278+ raise error
279+
280+
281+ def test_api_error_status_code (self ):
282+ """Test ApiError with status code attribute."""
283+ error = ApiError ("Error with status" , status_code = 404 )
284+ assert str (error ) == "Error with status"
285+ assert error .status_code == 404
286+
287+ with pytest .raises (ApiError ) as exc_info :
288+ raise error
289+ assert exc_info .value .status_code == 404
0 commit comments