from pathlib import Path
import json
from domin8.storage.index import init_index, get_index_path, index_artifact, search_artifacts, reindex_all, get_index_stats
from domin8.storage import get_agent_data_root, write_json_atomic
def test_index_lifecycle(tmp_path, monkeypatch):
# Redirect agent data root to temp
monkeypatch.setenv("HOME", str(tmp_path))
root = get_agent_data_root()
# Create fake artifact
artifact_dir = root / "README.md" / "artifacts" / "uuid-test"
artifact_dir.mkdir(parents=True)
meta = {
"uuid": "uuid-test",
"repo_relative_path": "README.md",
"action": "EDIT",
"status": "pending",
"actor": {"id": "agent", "type": "agent"},
"created_at": "2026-01-01T00:00:00+00:00",
"pre_state_sha": None,
"post_state_sha": None
}
write_json_atomic(artifact_dir / "meta.json", meta)
# Ensure index initialized and artifact indexed
init_index()
index_artifact(artifact_dir, meta)
results = search_artifacts(repo_path="README.md")
assert any(r['uuid'] == 'uuid-test' for r in results)
stats = get_index_stats()
assert stats['index_exists']
# Reindex all should succeed and return count >=1
count = reindex_all()
assert count >= 1