56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
|
|
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)
|