Files
FusionAGI/tests/test_sqlite_backend.py

80 lines
2.2 KiB
Python
Raw Normal View History

"""Tests for SQLiteStateBackend."""
import os
import tempfile
import pytest
from fusionagi.core.sqlite_backend import SQLiteStateBackend
from fusionagi.schemas.task import Task, TaskState
@pytest.fixture
def db_path():
fd, path = tempfile.mkstemp(suffix=".db")
os.close(fd)
yield path
os.unlink(path)
@pytest.fixture
def backend(db_path):
return SQLiteStateBackend(db_path=db_path)
def test_set_and_get_task(backend):
task = Task(task_id="t1", goal="test goal")
backend.set_task(task)
loaded = backend.get_task("t1")
assert loaded is not None
assert loaded.task_id == "t1"
assert loaded.goal == "test goal"
def test_get_missing_task(backend):
assert backend.get_task("nonexistent") is None
def test_task_state(backend):
task = Task(task_id="t2", goal="state test")
backend.set_task(task)
assert backend.get_task_state("t2") == TaskState.PENDING
backend.set_task_state("t2", TaskState.ACTIVE)
assert backend.get_task_state("t2") == TaskState.ACTIVE
def test_traces(backend):
backend.set_task(Task(task_id="t3", goal="trace test"))
backend.append_trace("t3", {"step": 1, "action": "start"})
backend.append_trace("t3", {"step": 2, "action": "complete"})
traces = backend.get_trace("t3")
assert len(traces) == 2
assert traces[0]["step"] == 1
assert traces[1]["action"] == "complete"
def test_list_tasks(backend):
for i in range(5):
t = Task(task_id=f"list-{i}", goal=f"goal {i}")
if i >= 3:
t = t.model_copy(update={"state": TaskState.ACTIVE})
backend.set_task(t)
all_tasks = backend.list_tasks()
assert len(all_tasks) == 5
active = backend.list_tasks(state=TaskState.ACTIVE)
assert len(active) == 2
def test_delete_task(backend):
backend.set_task(Task(task_id="del-1", goal="delete me"))
backend.append_trace("del-1", {"action": "trace"})
assert backend.delete_task("del-1") is True
assert backend.get_task("del-1") is None
assert backend.get_trace("del-1") == []
def test_count_tasks(backend):
assert backend.count_tasks() == 0
backend.set_task(Task(task_id="c1", goal="count"))
assert backend.count_tasks() == 1