"""Tests for exception classes.""" import pytest from src.exceptions import ( BackendUnavailableError, InferenceError, InferenceTimeoutError, ModelNotFoundError, ValidationError, ) class TestInferenceError: """Test base InferenceError.""" def test_basic_error(self): """Test basic error creation.""" error = InferenceError("Test error") assert error.message == "Test error" assert error.error_code == "inference_error" assert error.status_code == 500 def test_error_with_request_id(self): """Test error with request_id.""" error = InferenceError("Test error", request_id="req-123") assert error.request_id == "req-123" def test_to_openai_error(self): """Test OpenAI error format.""" error = InferenceError("Test error", request_id="req-123") result = error.to_openai_error() assert "error" in result assert result["error"]["message"] == "Test error" assert result["error"]["type"] == "inference_error" assert result["error"]["request_id"] == "req-123" class TestValidationError: """Test ValidationError.""" def test_validation_error(self): """Test validation error creation.""" error = ValidationError("Invalid parameter", param="temperature") assert error.status_code == 400 assert error.error_code == "invalid_request_error" assert error.param == "temperature" def test_to_openai_error_with_param(self): """Test OpenAI format includes param.""" error = ValidationError("Invalid", param="max_tokens") result = error.to_openai_error() assert result["error"]["param"] == "max_tokens" class TestModelNotFoundError: """Test ModelNotFoundError.""" def test_model_not_found(self): """Test model not found error.""" error = ModelNotFoundError(model="unknown-model") assert error.status_code == 404 assert "unknown-model" in error.message assert error.model == "unknown-model" class TestBackendUnavailableError: """Test BackendUnavailableError.""" def test_backend_unavailable(self): """Test backend unavailable error.""" error = BackendUnavailableError(backend="ollama", reason="Connection refused") assert error.status_code == 503 assert "ollama" in error.message assert error.backend == "ollama" class TestInferenceTimeoutError: """Test InferenceTimeoutError.""" def test_timeout_error(self): """Test timeout error.""" error = InferenceTimeoutError(timeout_ms=5000) assert error.status_code == 504 assert "5000" in error.message assert error.timeout_ms == 5000