Files
MoviePilot/tests/test_transfer_message.py

48 lines
1.6 KiB
Python

from unittest.mock import patch
from app.chain.transfer import TransferChain
from app.core.context import MediaInfo
from app.core.meta.metabase import MetaBase
from app.schemas import TransferInfo
from app.schemas.tmdb import TmdbEpisode
from app.schemas.types import ContentType, MediaType, NotificationType
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 == NotificationType.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"