"""Ehemals Statuswerte des AriaOrchestrators. Jetzt: Lebenszyklusstatus der
Gateway-Antwort. Fehlender Adapter wird vor der Ausführung erkannt
(blocked statt failed, siehe docs/AENDERUNGEN.md)."""
import unittest

from aria_router.adapters import MockAdapter
from aria_router.gateway import Handling

from tests.helpers import GatewayTestCase


class StatusIntegrationTests(GatewayTestCase):

    def test_completed_status(self):
        result = self.gateway().handle(self.request(1, "#public hallo"))
        self.assertEqual(result.status, "completed")

    def test_blocked_status(self):
        gateway = self.gateway({"privacy": {"claude_status_quo_confidential": False}})
        result = gateway.handle(self.request(2, "Personaldaten der adesso-Mitarbeiter"))
        self.assertEqual(result.status, "blocked")

    def test_missing_adapter_failed(self):
        gateway = self.gateway(adapter_factories={"codex": None})
        result = gateway.handle(self.request(3, "/codex #public hallo"))
        self.assertEqual(result.status, "blocked")
        self.assertEqual(result.handling, Handling.BLOCKED)

    def test_adapter_exception_failed(self):
        gateway = self.gateway(adapter_factories={
            "codex": lambda verifier: MockAdapter(verifier, "codex", raise_error=True)})
        result = gateway.handle(self.request(4, "#public hallo"))
        self.assertEqual(result.status, "failed")
        self.assertEqual(result.code, "ADAPTER_EXCEPTION")


if __name__ == "__main__":
    unittest.main()
