ForcePilot/backend/test/unit/channels/test_zalo_user_cards.py

61 lines
2.2 KiB
Python
Raw Normal View History

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