fix: 修复站点用户数据转换并完善媒体来源扩展

This commit is contained in:
jxxghp
2026-08-18 14:50:09 +08:00
parent c2a27f7c71
commit dc23977b0c
11 changed files with 179 additions and 2 deletions
+23
View File
@@ -80,6 +80,29 @@ def test_projection_preserves_services_modules_actions_and_pid_filter():
}]
def test_projection_collects_enabled_media_source_declarations():
"""只投影启用插件的媒体来源声明,并附带插件 ID 便于诊断。"""
demo = _Plugin(
get_media_source=lambda: [{
"name": "Acme Video",
"media_source": "acme.video",
"media_types": ["电影", "电视剧"],
}],
)
disabled = _Plugin(
enabled=False,
get_media_source=lambda: [{"name": "Disabled", "media_source": "disabled"}],
)
projection = PluginProjection({"Demo": demo, "Disabled": disabled})
assert projection.media_sources() == [{
"name": "Acme Video",
"media_source": "acme.video",
"media_types": ["电影", "电视剧"],
"plugin_id": "Demo",
}]
def test_projection_isolates_one_plugin_hook_failure():
"""单个插件 hook 失败只记日志,不阻断其他插件投影。"""
errors = []
+32
View File
@@ -0,0 +1,32 @@
"""站点查询应用服务的 ORM 投影契约测试。"""
from unittest.mock import Mock
from app.application.site.query import SiteQueryService
from app.db.models.siteuserdata import SiteUserData as SiteUserDataRecord
from app.schemas.site import SiteUserData
def test_userdata_latest_sync_projects_orm_record_to_dto() -> None:
"""同步站点用户数据查询应支持 SQLAlchemy ORM 记录。"""
record = SiteUserDataRecord(
domain="site.example",
username="tester",
userid="42",
user_level="Power User",
upload=1024.0,
download=512.0,
seeding=3.0,
leeching=1.0,
seeding_size=2048.0,
leeching_size=256.0,
)
repository = Mock()
repository.get_userdata_latest.return_value = [record]
result = SiteQueryService(repository).userdata_latest_sync()
assert isinstance(result[0], SiteUserData)
assert result[0].domain == "site.example"
assert result[0].userid == "42"
assert result[0].upload == 1024