ForcePilot/backend/test/unit/channel/startup/test_message_context.py
Kris 6c95dc006a test: 新增渠道模块全链路单元测试用例与目录结构
完成渠道模块的单元测试目录搭建,新增多个领域模型、端口、中间件、事件、服务以及基础设施层的单元测试文件,同时补充了conftest.py的环境变量配置,完善测试基础环境。
2026-05-30 21:55:35 +08:00

68 lines
2.3 KiB
Python

from __future__ import annotations
import pytest
from yuxi.channel.domain.service.message_context import MessageContext
from yuxi.channel.domain.model.message.unified_message import UnifiedMessage
from yuxi.channel.domain.model.message.peer import Peer
class TestMessageContext:
@pytest.fixture
def sample_message(self):
return UnifiedMessage(
message_id="msg123",
channel_type="web",
sender=Peer(id="user1", name="User"),
content="Hello",
)
def test_basic_creation(self, sample_message):
ctx = MessageContext(message=sample_message)
assert ctx.message == sample_message
assert ctx.is_aborted is False
assert ctx.is_skipped is False
assert ctx.trace_id is None
def test_abort(self, sample_message):
ctx = MessageContext(message=sample_message)
ctx.abort("TEST", "test abort")
assert ctx.is_aborted is True
assert ctx.abort_code == "TEST"
assert ctx.abort_reason == "test abort"
def test_skip(self, sample_message):
ctx = MessageContext(message=sample_message)
ctx.skip("test skip")
assert ctx.is_skipped is True
assert ctx.skip_reason == "test skip"
def test_set_trace_id(self, sample_message):
ctx = MessageContext(message=sample_message)
ctx.set_trace_id("trace123")
assert ctx.trace_id == "trace123"
def test_set_headers(self, sample_message):
ctx = MessageContext(message=sample_message)
ctx.set_headers({"Authorization": "Bearer token"})
assert ctx.headers == {"Authorization": "Bearer token"}
def test_set_metadata(self, sample_message):
ctx = MessageContext(message=sample_message)
ctx.set_metadata({"key": "value"})
assert ctx.metadata == {"key": "value"}
def test_multiple_aborts(self, sample_message):
ctx = MessageContext(message=sample_message)
ctx.abort("FIRST", "first abort")
ctx.abort("SECOND", "second abort")
assert ctx.abort_code == "FIRST"
assert ctx.abort_reason == "first abort"
def test_abort_then_skip(self, sample_message):
ctx = MessageContext(message=sample_message)
ctx.abort("TEST", "test abort")
ctx.skip("test skip")
assert ctx.is_aborted is True
assert ctx.is_skipped is True