mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-05-28 07:26:52 +00:00
98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
import unittest
|
|
|
|
from app.schemas import FileItem, TransferInfo
|
|
|
|
|
|
class TransferInfoTest(unittest.TestCase):
|
|
def test_ensure_target_items_fills_missing_target_items_from_target_path(self):
|
|
"""
|
|
整理结果只有目标路径清单时,应补齐目标文件项和目录项。
|
|
"""
|
|
transferinfo = TransferInfo(
|
|
success=True,
|
|
fileitem=FileItem(
|
|
storage="alist",
|
|
path="/downloads/Test.Show.S01E01.mkv",
|
|
type="file",
|
|
name="Test.Show.S01E01.mkv",
|
|
size=1024,
|
|
),
|
|
file_list_new=[
|
|
"/library/Test Show (2026)/Season 1/Test.Show.S01E01.mkv"
|
|
],
|
|
transfer_type="move",
|
|
)
|
|
|
|
transferinfo.ensure_target_items()
|
|
|
|
self.assertIsNotNone(transferinfo.target_item)
|
|
self.assertIsNotNone(transferinfo.target_diritem)
|
|
self.assertEqual(
|
|
"/library/Test Show (2026)/Season 1/Test.Show.S01E01.mkv",
|
|
transferinfo.target_item.path,
|
|
)
|
|
self.assertEqual(
|
|
"/library/Test Show (2026)/Season 1",
|
|
transferinfo.target_diritem.path,
|
|
)
|
|
self.assertEqual("alist", transferinfo.target_item.storage)
|
|
self.assertEqual("alist", transferinfo.target_diritem.storage)
|
|
|
|
def test_ensure_target_items_keeps_new_model_initial_state(self):
|
|
"""
|
|
新建整理结果模型不应立即改写目标项,避免影响失败记录等非事件流程。
|
|
"""
|
|
transferinfo = TransferInfo(
|
|
success=True,
|
|
fileitem=FileItem(
|
|
storage="alist",
|
|
path="/downloads/Test.Show.S01E01.mkv",
|
|
type="file",
|
|
name="Test.Show.S01E01.mkv",
|
|
),
|
|
file_list_new=[
|
|
"/library/Test Show (2026)/Season 1/Test.Show.S01E01.mkv"
|
|
],
|
|
transfer_type="move",
|
|
)
|
|
|
|
self.assertIsNone(transferinfo.target_item)
|
|
self.assertIsNone(transferinfo.target_diritem)
|
|
|
|
def test_ensure_target_items_fills_missing_target_diritem_from_target_item(self):
|
|
"""
|
|
目标文件项已存在但目录项缺失时,应从目标文件路径推导目录项。
|
|
"""
|
|
transferinfo = TransferInfo(
|
|
success=True,
|
|
fileitem=FileItem(
|
|
storage="alist",
|
|
path="/downloads/Test.Show.S01E02.mkv",
|
|
type="file",
|
|
name="Test.Show.S01E02.mkv",
|
|
),
|
|
target_item=FileItem(
|
|
storage="alist",
|
|
path="/library/Test Show (2026)/Season 1/Test.Show.S01E02.mkv",
|
|
type="file",
|
|
name="Test.Show.S01E02.mkv",
|
|
),
|
|
file_list_new=[
|
|
"/library/Test Show (2026)/Season 1/Test.Show.S01E02.mkv"
|
|
],
|
|
transfer_type="move",
|
|
)
|
|
|
|
transferinfo.ensure_target_items()
|
|
|
|
self.assertIsNotNone(transferinfo.target_diritem)
|
|
self.assertEqual(
|
|
"/library/Test Show (2026)/Season 1",
|
|
transferinfo.target_diritem.path,
|
|
)
|
|
self.assertEqual("alist", transferinfo.target_diritem.storage)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|