31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
|
|
"""Tests for PostgresStateBackend graceful degradation.
|
||
|
|
|
||
|
|
When psycopg2 is unavailable, all operations are no-ops.
|
||
|
|
"""
|
||
|
|
|
||
|
|
from fusionagi.core.postgres_backend import PostgresStateBackend
|
||
|
|
from fusionagi.schemas.task import Task, TaskState
|
||
|
|
|
||
|
|
|
||
|
|
def test_graceful_fallback_without_psycopg2():
|
||
|
|
"""PostgresStateBackend should silently degrade when Postgres is unreachable."""
|
||
|
|
backend = PostgresStateBackend(dsn="postgresql://invalid:invalid@localhost:1/invalid")
|
||
|
|
assert backend._available is False
|
||
|
|
|
||
|
|
# All reads return None/empty
|
||
|
|
assert backend.get_task("t1") is None
|
||
|
|
assert backend.get_task_state("t1") is None
|
||
|
|
assert backend.get_trace("t1") == []
|
||
|
|
assert backend.list_tasks() == []
|
||
|
|
assert backend.count_tasks() == 0
|
||
|
|
|
||
|
|
# All writes are no-ops
|
||
|
|
backend.set_task(Task(task_id="t1", goal="test"))
|
||
|
|
backend.set_task_state("t1", TaskState.ACTIVE)
|
||
|
|
backend.append_trace("t1", {"step": 1})
|
||
|
|
assert backend.delete_task("t1") is False
|
||
|
|
|
||
|
|
# Close is safe
|
||
|
|
backend.close()
|
||
|
|
assert backend._available is False
|