Terminal / tests /test_ai_client_schema_compatibility.py
Baida07's picture
sync: 153 file da Baida98/AI@aea39689 (2026-08-15 10:11 UTC) [deploy-all] (#31)
83a8ef6
Raw
History Blame
2.24 kB
import os
import sys
import types
import unittest
from unittest.mock import patch
from models.ai_client import AIClient
class _LegacySchemaError(Exception):
pass
class _Result:
def __init__(self, data):
self.data = data
class _LegacyQuery:
def __init__(self, rows):
self.rows = rows
self.selects = []
def select(self, columns):
self.selects.append(columns)
if "default_model" in columns:
raise _LegacySchemaError("column ai_providers.default_model does not exist")
return self
def eq(self, *_args, **_kwargs):
return self
def order(self, *_args, **_kwargs):
return self
def execute(self):
return _Result(self.rows)
class _LegacySupabase:
def __init__(self, rows):
self.query = _LegacyQuery(rows)
def table(self, name):
assert name == "ai_providers"
return self.query
class LegacySchemaCompatibilityTests(unittest.TestCase):
def test_detects_only_known_legacy_missing_columns(self):
self.assertTrue(
AIClient._is_legacy_schema_error(
_LegacySchemaError("column ai_providers.default_model does not exist")
)
)
self.assertFalse(
AIClient._is_legacy_schema_error(
_LegacySchemaError("column ai_providers.api_key does not exist")
)
)
def test_legacy_schema_returns_empty_so_current_environment_fallback_stays_authoritative(self):
legacy_supabase = _LegacySupabase([])
fake_supabase = types.SimpleNamespace(
create_client=lambda _url, _key: legacy_supabase,
)
client = AIClient.__new__(AIClient)
with patch.dict(
os.environ,
{"SUPABASE_URL": "https://example.supabase.co", "SUPABASE_SERVICE_ROLE_KEY": "test"},
clear=True,
), patch.dict(sys.modules, {"supabase": fake_supabase}):
providers = client._try_load_from_supabase()
self.assertEqual(legacy_supabase.query.selects, [
"id,name,api_key,base_url,default_model,tier,purpose",
])
self.assertEqual(providers, [])
if __name__ == "__main__":
unittest.main()