"""Tests for sonarqube_mcp.errors."""
from __future__ import annotations
from sonarqube_mcp.errors import SonarQubeError, error_response
class TestSonarQubeError:
"""Tests for the SonarQubeError dataclass."""
def test_str_format(self) -> None:
err = SonarQubeError(code="test_code", message="something broke")
assert str(err) == "test_code: something broke"
def test_is_exception(self) -> None:
err = SonarQubeError(code="x", message="y")
assert isinstance(err, Exception)
def test_details_default_empty(self) -> None:
err = SonarQubeError(code="x", message="y")
assert err.details == {}
def test_details_preserved(self) -> None:
err = SonarQubeError(code="x", message="y", details={"k": "v"})
assert err.details == {"k": "v"}
class TestErrorResponse:
"""Tests for the error_response helper."""
def test_sonarqube_error_envelope(self) -> None:
err = SonarQubeError(code="auth", message="bad token", details={"a": 1})
resp = error_response(err)
assert resp == {
"ok": False,
"error_code": "auth",
"message": "bad token",
"details": {"a": 1},
}
def test_generic_exception_envelope(self) -> None:
resp = error_response(RuntimeError("boom"))
assert resp["ok"] is False
assert resp["error_code"] == "internal_error"
assert "boom" in resp["message"]
assert resp["details"] == {}