legco_ai_assistant/backend/app/test/test_phase1_config.py

78 lines
2.8 KiB
Python

import pytest
import os
from pathlib import Path
def test_config_loads_from_env(tmp_path, monkeypatch):
env_file = tmp_path / ".env"
env_file.write_text(
"LLM_BASE_URL=https://openrouter.ai/api/v1\n"
"LLM_API_KEY=test_key_123\n"
"LLM_MODEL_NAME=qwen/qwen3.5-35b-a3b\n"
"EMBEDDING_MODEL=qwen/qwen3-embedding-4b\n"
"EMBEDDING_BASE_URL=https://openrouter.ai/api/v1\n"
"CHROMA_DB_PATH=./test_chroma\n"
)
monkeypatch.chdir(tmp_path)
from app.core.config import Settings
settings = Settings()
assert settings.llm_base_url == "https://openrouter.ai/api/v1"
assert settings.llm_api_key == "test_key_123"
assert settings.llm_model_name == "qwen/qwen3.5-35b-a3b"
assert settings.chroma_db_path == "./test_chroma"
def test_config_default_values(monkeypatch):
monkeypatch.delenv("LLM_BASE_URL", raising=False)
from app.core.config import Settings
settings = Settings()
assert settings.llm_base_url == "https://openrouter.ai/api/v1"
assert settings.llm_model_name == "qwen/qwen3.5-35b-a3b"
def test_qa_chunking_config_defaults(monkeypatch):
"""Phase 8.0: Q&A chunking config fields have correct defaults."""
monkeypatch.delenv("DEFAULT_CHUNKING_STRATEGY", raising=False)
monkeypatch.delenv("QA_VISION_ENABLED", raising=False)
monkeypatch.delenv("QA_MAX_CHUNK_TOKENS", raising=False)
monkeypatch.delenv("QA_STRUCTURE_MODEL", raising=False)
monkeypatch.delenv("QA_INCLUDE_INTERNAL_REFS", raising=False)
monkeypatch.delenv("QA_CACHE_VISION_RESULTS", raising=False)
from app.core.config import Settings
settings = Settings()
assert settings.default_chunking_strategy == "token"
assert settings.qa_vision_enabled is True
assert settings.qa_max_chunk_tokens == 3000
assert settings.qa_structure_model == ""
assert settings.qa_include_internal_refs is True
assert settings.qa_cache_vision_results is True
def test_qa_chunking_config_from_env(tmp_path, monkeypatch):
"""Phase 8.0: Q&A chunking config fields load from .env."""
env_file = tmp_path / ".env"
env_file.write_text(
"DEFAULT_CHUNKING_STRATEGY=question\n"
"QA_VISION_ENABLED=false\n"
"QA_MAX_CHUNK_TOKENS=5000\n"
"QA_STRUCTURE_MODEL=anthropic/claude-3-haiku\n"
"QA_INCLUDE_INTERNAL_REFS=false\n"
"QA_CACHE_VISION_RESULTS=false\n"
)
monkeypatch.chdir(tmp_path)
from app.core.config import Settings
settings = Settings()
assert settings.default_chunking_strategy == "question"
assert settings.qa_vision_enabled is False
assert settings.qa_max_chunk_tokens == 5000
assert settings.qa_structure_model == "anthropic/claude-3-haiku"
assert settings.qa_include_internal_refs is False
assert settings.qa_cache_vision_results is False