"""Unit tests for utils.py module.""" from unittest.mock import MagicMock import pytest import requests from src.logic.retry_exception import RetriableError from src.utils import detect_retriable_error class TestDetectRetriableError: """Tests for detect_retriable_error decorator.""" @staticmethod def raise_common_exception(): """Raise common exception.""" raise Exception def test_common_exception(self): """Test common exception.""" with pytest.raises(Exception): detect_retriable_error(self.raise_common_exception)() @staticmethod def raise_requests_404(): """Raise requests 404 error.""" raise requests.exceptions.HTTPError(response=MagicMock(status_code=404)) def test_requests_404(self): """Test requests 404 error.""" with pytest.raises(requests.exceptions.HTTPError): detect_retriable_error(self.raise_requests_404)() @staticmethod def raise_requests_500(): """Raise requests 500 error.""" raise requests.exceptions.HTTPError(response=MagicMock(status_code=500)) def test_requests_500(self): """Test requests 500 error.""" with pytest.raises(RetriableError): detect_retriable_error(self.raise_requests_500)() @staticmethod def raise_requests_connection_error(): """Raise requests ConnectionError error.""" raise requests.exceptions.ConnectionError def test_requests_connection_error(self): """Test requests ConnectionError error.""" with pytest.raises(RetriableError): detect_retriable_error(self.raise_requests_connection_error)()