"""Agent provider configuration checks without external API calls."""

from __future__ import annotations

import os
import sys
import unittest
from pathlib import Path
from unittest.mock import patch

PROJECT_ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(PROJECT_ROOT))
loaded_platform = sys.modules.get("platform")
if loaded_platform is not None and not hasattr(loaded_platform, "__path__"):
    del sys.modules["platform"]

from bridge_platform.agents.providers import OpenAIToolSelector, _strict_schema


class AgentProviderChecks(unittest.TestCase):
    def test_openai_selector_is_disabled_by_default(self):
        with patch.dict(os.environ, {}, clear=True):
            self.assertIsNone(OpenAIToolSelector.from_environment())

    def test_model_is_configuration_not_app_contract(self):
        with patch.dict(os.environ, {
            "AGENT_LLM_ENABLED": "1", "AGENT_LLM_MODEL": "test-model",
        }, clear=True):
            selector = OpenAIToolSelector.from_environment()
        self.assertIsNotNone(selector)
        self.assertEqual("test-model", selector.model)

    def test_app_schema_is_converted_without_mutating_source(self):
        source = {
            "type": "object", "required": ["abn"],
            "properties": {"abn": {"type": "string"}, "include_history": {"type": "boolean"}},
        }
        strict = _strict_schema(source)
        self.assertFalse(strict["additionalProperties"])
        self.assertEqual(["abn", "include_history"], strict["required"])
        self.assertNotIn("additionalProperties", source)
