from __future__ import annotations import pytest import fakeredis from backend.app.core.idempotency import IdempotencyStore from backend.app.core.dlq import DeadLetterQueue from backend.app.core.outbox import TransactionalOutbox @pytest.fixture() def fake_redis(): return fakeredis.FakeRedis(decode_responses=True) @pytest.fixture() def idempotency_store(fake_redis): return IdempotencyStore(fake_redis) @pytest.fixture() def dlq(fake_redis): return DeadLetterQueue(fake_redis) @pytest.fixture() def outbox(fake_redis, idempotency_store, dlq): return TransactionalOutbox( redis_client=fake_redis, idempotency_store=idempotency_store, dlq=dlq, transport="redis_streams", )