gitrag-free-mcp / packages /core /tests /test_component_loader.py
jacklalane's picture
Deploy GitRag space
324144b verified
Raw
History Blame Contribute Delete
2.82 kB
import os
from unittest.mock import MagicMock, patch
import pytest
from ComponentLoader import _env_value, resolve_db_cfg, load_components
from Persistence.Persist import DBConfig, LibsqlConfig
def test_env_value():
with patch.dict(os.environ, {"TEST_KEY": " test_value "}):
assert _env_value("TEST_KEY") == "test_value"
assert _env_value("NONEXISTENT") == ""
def test_resolve_db_cfg_libsql_success():
with patch.dict(os.environ, {
"DB_PROVIDER": "libsql",
"DATABASE_URL": "sqlite:///:memory:",
"DB_AUTH_TOKEN": "token",
"LIBSQL_TABLE": "my_table",
"LIBSQL_FTS_TABLE": "my_fts_table"
}):
cfg = resolve_db_cfg()
assert isinstance(cfg, LibsqlConfig)
assert cfg.provider == "libsql"
assert cfg.url == "sqlite:///:memory:"
assert cfg.auth_token == "token"
assert cfg.table == "my_table"
assert cfg.fts_table == "my_fts_table"
def test_resolve_db_cfg_libsql_fallback_turso():
with patch.dict(os.environ, {
"TURSO_DATABASE_URL": "libsql://test.turso.io",
"TURSO_AUTH_TOKEN": "turso_token"
}, clear=True):
cfg = resolve_db_cfg()
assert isinstance(cfg, LibsqlConfig)
assert cfg.url == "libsql://test.turso.io"
assert cfg.auth_token == "turso_token"
def test_resolve_db_cfg_libsql_missing_url():
with patch.dict(os.environ, {}, clear=True):
with pytest.raises(RuntimeError, match="TURSO_DATABASE_URL for libsql"):
resolve_db_cfg()
def test_resolve_db_cfg_postgres():
with patch.dict(os.environ, {
"DB_PROVIDER": "postgres",
"DATABASE_URL": "postgresql://user:pass@localhost/db"
}, clear=True):
cfg = resolve_db_cfg()
assert not isinstance(cfg, LibsqlConfig)
assert isinstance(cfg, DBConfig)
assert cfg.provider == "postgres"
assert cfg.url == "postgresql://user:pass@localhost/db"
def test_resolve_db_cfg_postgres_missing_url():
with patch.dict(os.environ, {"DB_PROVIDER": "postgres"}, clear=True):
with pytest.raises(RuntimeError, match="DATABASE_URL is required"):
resolve_db_cfg()
@patch("ComponentLoader.EmbeddingCalculator")
@patch("ComponentLoader.create_persistence_adapter")
@patch("ComponentLoader.resolve_db_cfg")
def test_load_components(mock_resolve, mock_create_persist, mock_calc_class):
mock_calc = mock_calc_class.return_value
mock_calc.dimensions = 1024
mock_cfg = MagicMock()
mock_cfg.provider = "postgres"
mock_resolve.return_value = mock_cfg
mock_persist = mock_create_persist.return_value
calc, persist = load_components()
assert calc == mock_calc
assert persist == mock_persist
mock_create_persist.assert_called_once_with("postgres", cfg=mock_cfg, dim=1024)