78 lines
2.8 KiB
Python
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
|