from __future__ import annotations from yuxi.channel.domain.middleware.middleware import Middleware, CallNext from yuxi.channel.domain.service.message_context import MessageContext def test_middleware_is_protocol() -> None: assert hasattr(Middleware, "name") assert hasattr(Middleware, "process") class _FakeMiddleware: @property def name(self) -> str: return "fake" async def process(self, ctx: MessageContext, call_next: CallNext) -> MessageContext: return await call_next(ctx) def test_fake_middleware_is_instance() -> None: obj = _FakeMiddleware() assert isinstance(obj, Middleware)