mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-11-01 12:56:34 +08:00
fix(vyo): load servers using the persisted configuration type
This commit is contained in:
@@ -22,8 +22,9 @@ class VyoModule(_MediaServerModuleBase[Vyo]):
|
||||
"""
|
||||
初始化模块
|
||||
"""
|
||||
# 展示名更改为 Vyo,持久化配置类型仍为 mediavault,不能从类名推导。
|
||||
super().init_service(
|
||||
service_name=Vyo.__name__.lower(),
|
||||
service_name=self._server_type_value,
|
||||
service_type=lambda conf: Vyo(
|
||||
**conf.config, sync_libraries=conf.sync_libraries
|
||||
),
|
||||
|
||||
@@ -6,11 +6,50 @@ from typing import Optional
|
||||
import pytest
|
||||
|
||||
from app.modules.vyo.api import Api, Result
|
||||
from app.modules.vyo.module import VyoModule
|
||||
from app.modules.vyo.vyo import Vyo
|
||||
from app.runtime.extensions.service import ServiceConfigHelper
|
||||
from app.schemas.mediaserver import RefreshMediaItem
|
||||
from app.schemas.system import MediaServerConf
|
||||
from app.schemas.types import MediaSource, MediaType
|
||||
|
||||
|
||||
@pytest.mark.parametrize("connected", [True, False])
|
||||
def test_saved_config_loads_for_connection_test_and_statistics(monkeypatch, connected):
|
||||
"""更名后的模块仍加载已保存的类型,并实际执行连通性和统计查询。"""
|
||||
config = MediaServerConf(
|
||||
name="客厅 Vyo", type="mediavault", enabled=True,
|
||||
config={"host": "http://vyo.test", "apikey": "test-only"},
|
||||
sync_libraries=["movies"],
|
||||
)
|
||||
configs = [
|
||||
config,
|
||||
config.model_copy(update={"name": "已停用", "enabled": False}),
|
||||
config.model_copy(update={"name": "其他服务器", "type": "emby"}),
|
||||
]
|
||||
monkeypatch.setattr(ServiceConfigHelper, "get_mediaserver_configs", lambda: configs)
|
||||
api = _FakeApi({
|
||||
"/libraries": Result(connected, {"items": []}),
|
||||
"/statistics": Result(True, {"movie_count": 12, "series_count": 3, "episode_count": 24}),
|
||||
"/users": Result(True, []),
|
||||
})
|
||||
monkeypatch.setattr(Api, "request", lambda _self, *args, **kwargs: api.request(*args, **kwargs))
|
||||
module = VyoModule()
|
||||
try:
|
||||
module.init_module()
|
||||
assert list(module.get_instances()) == [config.name]
|
||||
assert api.calls[0]["api"] == "/libraries"
|
||||
assert module.test() == ((True, "") if connected else (False, f"无法连接Vyo:{config.name}"))
|
||||
if connected:
|
||||
statistics = module.media_statistic(server=config.name)
|
||||
assert len(statistics) == 1
|
||||
assert statistics[0].movie_count == 12
|
||||
assert statistics[0].tv_count == 3
|
||||
assert statistics[0].episode_count == 24
|
||||
finally:
|
||||
module.stop()
|
||||
|
||||
|
||||
class _FakeApi:
|
||||
"""按路径返回预置数据,并记录调用参数。"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user