mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-15 02:54:20 +08:00
56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
from unittest.mock import patch
|
|
|
|
from app.api.endpoints import system as system_endpoint
|
|
from app.helper.locale import LocaleHelper
|
|
|
|
|
|
class _FakeDoubanModule:
|
|
"""构造带中文名称的模块类,模拟真实 DoubanModule。"""
|
|
|
|
@staticmethod
|
|
def get_name() -> str:
|
|
"""获取模块中文名称"""
|
|
return "豆瓣"
|
|
|
|
|
|
class _FakeModuleManager:
|
|
"""提供 system 模块接口测试所需的最小模块管理器。"""
|
|
|
|
def get_modules(self) -> dict:
|
|
"""返回模块字典"""
|
|
return {"DoubanModule": _FakeDoubanModule}
|
|
|
|
def test(self, moduleid: str) -> tuple[bool, str]:
|
|
"""返回模块测试结果"""
|
|
return False, "模块不支持测试"
|
|
|
|
|
|
def test_system_modulelist_keeps_chinese_name_and_adds_i18n_name():
|
|
"""模块列表接口应保留旧中文字段,并提供前端可用的多语言字段。"""
|
|
token = LocaleHelper.set_current_locale("en-US")
|
|
with patch.object(system_endpoint, "ModuleManager", return_value=_FakeModuleManager()):
|
|
try:
|
|
response = system_endpoint.modulelist(_="token")
|
|
finally:
|
|
LocaleHelper.reset_current_locale(token)
|
|
|
|
module = response.data["modules"][0]
|
|
assert module["id"] == "DoubanModule"
|
|
assert module["name"] == "豆瓣"
|
|
assert module["name_i18n"] == "Douban"
|
|
assert module["name_key"] == "system.modules.DoubanModule.name"
|
|
|
|
|
|
def test_system_moduletest_localizes_message():
|
|
"""模块测试接口应按当前请求语言直接返回翻译后的 message。"""
|
|
token = LocaleHelper.set_current_locale("en-US")
|
|
with patch.object(system_endpoint, "ModuleManager", return_value=_FakeModuleManager()):
|
|
try:
|
|
response = system_endpoint.moduletest("DoubanModule", _="token")
|
|
finally:
|
|
LocaleHelper.reset_current_locale(token)
|
|
|
|
assert response.success is False
|
|
assert response.message == "Module does not support testing"
|
|
assert not hasattr(response, "message_i18n")
|