import pytest from sqlalchemy import select from app.models import ( Setting, User, ProviderKey, HubKey, ModelAlias, FallbackChain, RoutingRule, CustomProvider, ModelPreset, ABTest, RequestTransformer, ResponseFilter, Webhook, InjectionLog, ProviderUptime, RequestLog, ConversationHistory, RagDocument, ExactCache, SemanticCache, ModelCatalog, BatchJob, HubKeyModelLimit, RateLimitLog, RealtimeSession, AgentConversation, Base, ) from tests._helpers import db_session class TestModels: @pytest.mark.asyncio async def test_create_setting(self, db_session): s = Setting(key="test_key", value="test_value") db_session.add(s) await db_session.commit() result = await db_session.execute(select(Setting).where(Setting.key == "test_key")) row = result.scalar_one() assert row.value == "test_value" @pytest.mark.asyncio async def test_create_user(self, db_session): u = User(username="testuser", password_hash="hash123", role="admin") db_session.add(u) await db_session.commit() result = await db_session.execute(select(User).where(User.username == "testuser")) row = result.scalar_one() assert row.role == "admin" @pytest.mark.asyncio async def test_create_provider_key(self, db_session): pk = ProviderKey(provider="openai", name="test-key", api_key="sk-xxx") db_session.add(pk) await db_session.commit() result = await db_session.execute(select(ProviderKey).where(ProviderKey.name == "test-key")) row = result.scalar_one() assert row.provider == "openai" assert row.is_active == 1 @pytest.mark.asyncio async def test_create_hub_key(self, db_session): hk = HubKey(name="test-hub", key_hash="abc123", key_prefix="nxs-test") db_session.add(hk) await db_session.commit() result = await db_session.execute(select(HubKey).where(HubKey.name == "test-hub")) row = result.scalar_one() assert row.key_prefix == "nxs-test" @pytest.mark.asyncio async def test_all_tables_registered(self): tables = Base.metadata.tables assert "settings" in tables assert "users" in tables assert "provider_keys" in tables assert "hub_keys" in tables assert "model_aliases" in tables assert "fallback_chains" in tables assert "routing_rules" in tables assert "custom_providers" in tables assert "model_presets" in tables assert "ab_tests" in tables assert "request_transformers" in tables assert "response_filters" in tables assert "webhooks" in tables assert "injection_logs" in tables assert "provider_uptime" in tables assert "request_logs" in tables assert "conversation_history" in tables assert "rag_documents" in tables assert "exact_cache" in tables assert "semantic_cache" in tables assert "model_catalog" in tables assert "batch_jobs" in tables assert "hub_key_model_limits" in tables assert "rate_limit_log" in tables assert "realtime_sessions" in tables assert "agent_conversations" in tables assert len(tables) == 27