from __future__ import annotations from unittest.mock import MagicMock import pytest from yuxi.channel.channels._registry import ChannelRegistry, get_registered_channels class TestChannelRegistry: @pytest.fixture def registry(self): return ChannelRegistry() def test_register(self, registry): adapter_cls = MagicMock() registry.register("web", adapter_cls) assert "web" in registry._channels assert registry._channels["web"] is adapter_cls def test_get(self, registry): adapter_cls = MagicMock() registry.register("web", adapter_cls) result = registry.get("web") assert result is adapter_cls def test_get_not_found(self, registry): result = registry.get("unknown") assert result is None def test_unregister(self, registry): adapter_cls = MagicMock() registry.register("web", adapter_cls) registry.unregister("web") assert "web" not in registry._channels def test_list(self, registry): adapter_cls1 = MagicMock() adapter_cls2 = MagicMock() registry.register("web", adapter_cls1) registry.register("feishu", adapter_cls2) channels = registry.list() assert "web" in channels assert "feishu" in channels assert len(channels) == 2 def test_clear(self, registry): adapter_cls = MagicMock() registry.register("web", adapter_cls) registry.clear() assert len(registry._channels) == 0 def test_get_registered_channels(self): channels = get_registered_channels() assert isinstance(channels, dict)