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