"""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