Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions faststream_outbox/__init__.py
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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
7 changes: 7 additions & 0 deletions tests/test_unit.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -16,6 +17,7 @@
NoRetry,
OutboxBroker,
OutboxRouter,
TestOutboxBroker,
make_outbox_table,
)
from faststream_outbox.client import OutboxClient
Expand All @@ -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)
Expand Down
Loading