| """Tests for top-level memory infrastructure helpers.""" |
|
|
| from __future__ import annotations |
|
|
| import sys |
| from pathlib import Path |
|
|
| import pytest |
|
|
| REPO_ROOT = Path(__file__).resolve().parents[2] |
| if str(REPO_ROOT) not in sys.path: |
| sys.path.insert(0, str(REPO_ROOT)) |
|
|
| from memory.long_term.db_store import DbStore |
| from memory.vector_store.vector_db_client import VectorDbClient |
|
|
|
|
| def test_vector_db_client_persists_and_searches(monkeypatch, tmp_path: Path) -> None: |
| monkeypatch.setattr( |
| "memory.vector_store.embeddings.embed_text", |
| lambda text: [1.0, 0.0] if "api" in text.lower() else [0.9, 0.1], |
| ) |
| client = VectorDbClient(storage_path=str(tmp_path / "vectors.json")) |
| client.add("memory", "Python API klients ar retry", {"source": "test"}) |
|
|
| matches = client.search("memory", "API klients", top_k=3) |
|
|
| assert matches |
| assert matches[0]["metadata"]["source"] == "test" |
| assert "API" in matches[0]["text"] |
|
|
|
|
| @pytest.mark.asyncio |
| async def test_db_store_rejects_unknown_table_name() -> None: |
| store = DbStore(dsn="postgresql://example.invalid/test") |
|
|
| result = await store.query("users; DROP TABLE users;", limit=10) |
|
|
| assert result == [] |
|
|