diff --git a/faststream_outbox/__init__.py b/faststream_outbox/__init__.py index 6bec73a..26e003c 100644 --- a/faststream_outbox/__init__.py +++ b/faststream_outbox/__init__.py @@ -1,3 +1,10 @@ +import functools +import typing + +import faststream.asgi.factories.asyncapi.try_it_out +from faststream._internal.broker import BrokerUsecase +from faststream._internal.testing.broker import TestBroker + from faststream_outbox.broker import OutboxBroker from faststream_outbox.retry import ( ConstantRetry, @@ -22,3 +29,14 @@ "TestOutboxBroker", "make_outbox_table", ] + +try: + original_get_broker_registry = faststream.asgi.factories.asyncapi.try_it_out._get_broker_registry # noqa: SLF001 + + @functools.lru_cache(maxsize=1) + def get_broker_registry() -> dict[type[BrokerUsecase[typing.Any, typing.Any]], type[TestBroker[typing.Any]]]: + return {**original_get_broker_registry(), OutboxBroker: TestOutboxBroker} # ty: ignore[invalid-return-type] + + faststream.asgi.factories.asyncapi.try_it_out._get_broker_registry = get_broker_registry # noqa: SLF001 +except Exception: # noqa: BLE001, S110 # pragma: no cover + pass diff --git a/tests/test_unit.py b/tests/test_unit.py index 414cf1c..37dd31a 100644 --- a/tests/test_unit.py +++ b/tests/test_unit.py @@ -3,6 +3,7 @@ import uuid from unittest.mock import AsyncMock, MagicMock, patch +import faststream.asgi.factories.asyncapi.try_it_out import pytest from pydantic import BaseModel from sqlalchemy import MetaData @@ -16,6 +17,7 @@ NoRetry, OutboxBroker, OutboxRouter, + TestOutboxBroker, make_outbox_table, ) from faststream_outbox.client import OutboxClient @@ -25,6 +27,11 @@ from faststream_outbox.subscriber.usecase import OutboxSubscriber +def test_outbox_broker_registered_in_try_it_out_registry() -> None: + registry = faststream.asgi.factories.asyncapi.try_it_out._get_broker_registry() # noqa: SLF001 + assert registry[OutboxBroker] is TestOutboxBroker # ty: ignore[invalid-argument-type] + + def _make_broker(engine: object | None = None, table_name: str = "outbox") -> OutboxBroker: metadata = MetaData() table = make_outbox_table(metadata, table_name=table_name)