from src.domain.connectors.cloud_status import cloud_connector_runtime_status
from src.domain.connectors.models import ConnectorConnectionStatus


def test_active_and_aliases_execute() -> None:
    assert cloud_connector_runtime_status("active") == "active"
    assert cloud_connector_runtime_status(ConnectorConnectionStatus.active) == "active"
    assert cloud_connector_runtime_status("ready") == "active"


def test_pending_disconnected_and_missing_need_configuration() -> None:
    assert cloud_connector_runtime_status("pending") == "configuration_required"
    assert cloud_connector_runtime_status(ConnectorConnectionStatus.pending) == "configuration_required"
    assert cloud_connector_runtime_status(ConnectorConnectionStatus.reauthentication_required) == "configuration_required"
    assert cloud_connector_runtime_status("disconnected") == "configuration_required"
    assert cloud_connector_runtime_status("testing") == "configuration_required"
    assert cloud_connector_runtime_status(None) == "configuration_required"
    assert cloud_connector_runtime_status("") == "configuration_required"


def test_error_is_degraded_not_unconfigured() -> None:
    assert cloud_connector_runtime_status("error") == "degraded"
    assert cloud_connector_runtime_status(ConnectorConnectionStatus.error) == "degraded"
    assert cloud_connector_runtime_status("degraded") == "degraded"


def test_canonical_cloud_values_are_idempotent() -> None:
    assert cloud_connector_runtime_status("configuration_required") == "configuration_required"
    assert cloud_connector_runtime_status("active") == "active"
    assert cloud_connector_runtime_status("degraded") == "degraded"
