B2D-agentic-ai / tests /test_project_store.py
AMRYB's picture
Upload 91 files
287f3d3 verified
Raw
History Blame Contribute Delete
2.29 kB
"""Tests for the SQLite-backed project store."""
from __future__ import annotations
import json
from agentic_core.project_store import ProjectStore
from agentic_core.schemas import ProjectContext
def test_create_save_load_round_trip(tmp_path):
store = ProjectStore(tmp_path / "b2d.db")
context = store.create("I want to build a booking platform.")
context.target_users = ["Players", "Owners"]
context.status = "ready_for_confirmation"
store.save(context)
loaded = store.load(context.project_id)
assert loaded is not None
assert loaded.business_idea == "I want to build a booking platform."
assert loaded.target_users == ["Players", "Owners"]
assert loaded.status == "ready_for_confirmation"
def test_load_missing_returns_none(tmp_path):
store = ProjectStore(tmp_path / "b2d.db")
assert store.load("nope") is None
def test_list_ids_and_overwrite(tmp_path):
store = ProjectStore(tmp_path / "b2d.db")
a = store.create("Idea A", project_id="proj_a")
store.create("Idea B", project_id="proj_b")
assert store.list_ids() == ["proj_a", "proj_b"]
a.business_idea = "Idea A updated"
store.save(a)
assert store.load("proj_a").business_idea == "Idea A updated"
def test_store_reopens_existing_database(tmp_path):
db = tmp_path / "b2d.db"
ProjectStore(db).create("Persistent idea", project_id="proj_p")
reopened = ProjectStore(db)
assert reopened.load("proj_p").business_idea == "Persistent idea"
def test_migrates_legacy_json_files_once(tmp_path):
legacy = tmp_path / "projects"
legacy.mkdir()
old = ProjectContext(project_id="proj_old", business_idea="Legacy idea")
old.status = "approved"
(legacy / "proj_old.json").write_text(
json.dumps(old.model_dump(mode="json")), encoding="utf-8"
)
db = tmp_path / "b2d.db"
store = ProjectStore(db, legacy_dir=legacy)
assert store.load("proj_old").business_idea == "Legacy idea"
# Idempotent: reopening does not duplicate or clobber newer state.
ctx = store.load("proj_old")
ctx.status = "needs_attention"
store.save(ctx)
ProjectStore(db, legacy_dir=legacy)
assert store.load("proj_old").status == "needs_attention"