# Copyright (c) Microsoft. All rights reserved.

"""Tests for Purview exceptions."""

from agent_framework.exceptions import IntegrationException, IntegrationInvalidAuthException

from agent_framework_purview import (
    PurviewAuthenticationError,
    PurviewPaymentRequiredError,
    PurviewRateLimitError,
    PurviewRequestError,
    PurviewServiceError,
)


class TestPurviewExceptions:
    """Test custom Purview exception classes."""

    def test_purview_service_error(self) -> None:
        """Test PurviewServiceError base exception."""
        error = PurviewServiceError("Service error occurred")
        assert str(error) == "Service error occurred"
        assert isinstance(error, IntegrationException)

    def test_purview_authentication_error(self) -> None:
        """Test PurviewAuthenticationError exception."""
        error = PurviewAuthenticationError("Authentication failed")
        assert str(error) == "Authentication failed"
        assert isinstance(error, IntegrationInvalidAuthException)

    def test_purview_payment_required_error(self) -> None:
        """Test PurviewPaymentRequiredError exception."""
        error = PurviewPaymentRequiredError("Payment required")
        assert str(error) == "Payment required"
        assert isinstance(error, IntegrationException)

    def test_purview_rate_limit_error(self) -> None:
        """Test PurviewRateLimitError exception."""
        error = PurviewRateLimitError("Rate limit exceeded")
        assert str(error) == "Rate limit exceeded"
        assert isinstance(error, IntegrationException)

    def test_purview_request_error(self) -> None:
        """Test PurviewRequestError exception."""
        error = PurviewRequestError("Request failed")
        assert str(error) == "Request failed"
        assert isinstance(error, IntegrationException)
