Files
MoviePilot/tests/test_transfer_message.py
T
jxxghp 240a4dffe6 refactor(schemas): 统一 message/notification 命名边界,旧名收敛至兼容映射表
- notification 域:渠道能力(MessageChannel→NotificationChannel、ChannelCapability* 迁入 notification.py)
- message 域:消息收发(Notification→Message、NotificationType→MessageType、CommingMessage→IncomingMessage、NotificationHistoryItem→MessageHistoryItem、NotificationClear*→MessageClear*)
- Agent 工具契约:send_notification_message→send_message、notification_callback→message_callback
- 源码不保留旧名物理别名,旧导入经 app/runtime/compat/manifest.py SYMBOL_ALIASES 惰性解析
- API 路径与持久化键冻结不变,前端零改动
- 新增兼容守护测试与 docs/rules/07 命名边界规范
2026-08-16 19:32:20 +08:00

48 lines
1.6 KiB
Python

from unittest.mock import patch
from app.chain.transfer import TransferChain
from app.domain.context import MediaInfo
from app.domain.meta.metabase import MetaBase
from app.schemas import TransferInfo
from app.schemas.tmdb import TmdbEpisode
from app.schemas.types import ContentType, MediaType, MessageType
def test_send_transfer_message_passes_episode_info_to_template_context() -> None:
"""
入库成功通知应把当前季集信息传给消息模板,确保 total_episodes 可渲染。
"""
chain = TransferChain()
meta = MetaBase("Test.Show.S01E01.mkv")
meta.type = MediaType.TV
meta.name = "Test Show"
meta.begin_season = 1
meta.begin_episode = 1
episodes_info = [
TmdbEpisode(episode_number=1, name="第一集"),
TmdbEpisode(episode_number=2, name="第二集"),
]
mediainfo = MediaInfo(
type=MediaType.TV,
title="Test Show",
season=1,
tmdb_id=12345,
)
transferinfo = TransferInfo(success=True)
with patch.object(chain, "post_message") as post_message:
chain.send_transfer_message(
meta=meta,
mediainfo=mediainfo,
transferinfo=transferinfo,
season_episode="S01 E01",
episodes_info=episodes_info,
username="tester",
)
message = post_message.call_args.args[0]
assert message.mtype == MessageType.Organize
assert message.ctype == ContentType.OrganizeSuccess
assert post_message.call_args.kwargs["episodes_info"] is episodes_info
assert post_message.call_args.kwargs["season_episode"] == "S01 E01"