mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-29 03:56:43 +08:00
44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
import unittest
|
|
from datetime import datetime
|
|
from unittest.mock import patch
|
|
|
|
from app.domain.context import TorrentInfo
|
|
from app.schemas.workflow import ActionContext
|
|
from app.workflow.actions.fetch_rss import FetchRssAction
|
|
|
|
|
|
class FetchRssActionTest(unittest.TestCase):
|
|
"""
|
|
RSS 工作流动作测试。
|
|
"""
|
|
|
|
def test_execute_builds_core_torrent_info_for_downstream_workflow(self):
|
|
"""
|
|
工作流产出的种子信息应使用 core TorrentInfo,避免下载事件下游收到缺少运行时接口的 schema 对象。
|
|
"""
|
|
rss_items = [
|
|
{
|
|
"title": "Example RSS Torrent",
|
|
"enclosure": "https://example.com/example.torrent",
|
|
"link": "https://example.com/details",
|
|
"size": 1024,
|
|
"pubdate": datetime(2026, 5, 19, 8, 30, 0),
|
|
}
|
|
]
|
|
|
|
with patch("app.workflow.actions.fetch_rss.RssHelper") as rss_helper, \
|
|
patch("app.workflow.actions.fetch_rss.runtime_stop_state.is_workflow_stopped", return_value=False):
|
|
rss_helper.return_value.parse.return_value = rss_items
|
|
|
|
context = FetchRssAction("fetch-rss").execute(
|
|
workflow_id=1,
|
|
params={"url": "https://example.com/rss.xml"},
|
|
context=ActionContext(),
|
|
)
|
|
|
|
torrent_info = context.torrents[0].torrent_info
|
|
self.assertIsInstance(torrent_info, TorrentInfo)
|
|
self.assertIsNone(torrent_info.category)
|
|
self.assertTrue(callable(getattr(torrent_info, "to_dict", None)))
|
|
self.assertEqual("2026-05-19 08:30:00", torrent_info.pubdate)
|