ForcePilot/backend/test/unit/channels/test_zalo_user_cards.py
Kris 3264900bc9 test: 新增多渠道单元测试用例并配置测试环境变量
新增了Twitch、Telegram、Discord、Slack、Mattermost、WeChat、Zalo等多渠道的单元测试用例,覆盖了令牌处理、速率限制、消息去重、会话解析、格式转换、安全策略等模块
同时在测试配置中添加了测试用的OpenAI API密钥环境变量
2026-05-12 00:56:47 +08:00

61 lines
2.2 KiB
Python

from __future__ import annotations
class TestCardCarousel:
def test_build_carousel(self):
from yuxi.channels.adapters.zalo_user.cards import (
ZaloCard,
build_card_carousel,
)
card1 = ZaloCard(title="Card 1", description="First card")
card2 = ZaloCard(title="Card 2", description="Second card")
payload = build_card_carousel("conv_123", [card1, card2])
assert payload["message_type"] == "card"
assert payload["conversation_id"] == "conv_123"
assert payload["cards"]["layout"] == "carousel"
assert len(payload["cards"]["elements"]) == 2
def test_card_message_layouts(self):
from yuxi.channels.adapters.zalo_user.cards import (
CardMessage,
ZaloCard,
)
horizontal = CardMessage(cards=[ZaloCard(title="Test")], layout="horizontal")
assert horizontal.to_dict()["layout"] == "horizontal"
carousel = CardMessage(cards=[ZaloCard(title="Test")], layout="carousel")
assert carousel.to_dict()["layout"] == "carousel"
class TestCardTemplates:
def test_welcome_card(self):
from yuxi.channels.adapters.zalo_user.cards import template_welcome_card
card = template_welcome_card("MyBot", "I am an assistant.")
assert "Welcome to MyBot" in card.title
assert card.description == "I am an assistant."
def test_confirmation_card(self):
from yuxi.channels.adapters.zalo_user.cards import template_confirmation_card
card = template_confirmation_card("Delete?", confirm_data="del_ok")
assert card.title == "Delete?"
assert card.buttons is not None
def test_info_card(self):
from yuxi.channels.adapters.zalo_user.cards import template_info_card
card = template_info_card("User Info", {"name": "Alice", "age": "30"})
assert "Alice" in card.description
assert "30" in card.description
def test_product_card(self):
from yuxi.channels.adapters.zalo_user.cards import template_product_card
card = template_product_card("ProductX", "$99", buy_url="https://example.com")
assert card.title == "ProductX"
assert card.buttons is not None