mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
fix: 修复音乐搜索统一入口参数名不匹配导致 500
/media/search?type=music 调用 MusicChain.async_search 时应传 query 关键字参数, 原实现误传 title 导致 TypeError;补充端点回归测试。
This commit is contained in:
@@ -13,6 +13,7 @@ from app.api.endpoints.music import (
|
||||
music_artist_related,
|
||||
recognize_music,
|
||||
)
|
||||
from app.api.endpoints import media as media_endpoints
|
||||
from app.core.context import MusicAlbumInfo, MusicArtistInfo, MusicInfo, MusicRelease
|
||||
from app.schemas.music import MusicRecognizeRequest
|
||||
from app.schemas.types import MediaType
|
||||
@@ -39,6 +40,46 @@ def test_music_routes_are_registered():
|
||||
)
|
||||
|
||||
|
||||
def test_media_search_routes_music_queries_with_query_kwarg():
|
||||
"""统一媒体搜索的音乐分支应以 AsyncSearch 的关键字参数调用 MusicChain。"""
|
||||
from app.chain.music import MusicChain
|
||||
|
||||
chain = Mock()
|
||||
chain.async_search = AsyncMock(
|
||||
return_value=[
|
||||
MusicInfo(
|
||||
source="musicbrainz",
|
||||
media_id="recording-1",
|
||||
music_type="recording",
|
||||
title="晴天",
|
||||
artists=["周杰伦"],
|
||||
release_date="2003-07-31",
|
||||
category="Album / Studio",
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
with (
|
||||
patch("app.api.endpoints.media.MusicChain", return_value=chain) as music_chain,
|
||||
patch.object(media_endpoints, "MediaChain") as media_chain,
|
||||
):
|
||||
result = asyncio.run(
|
||||
media_endpoints.search(
|
||||
title="晴天",
|
||||
type="music",
|
||||
count=30,
|
||||
page=1,
|
||||
_=Mock(),
|
||||
)
|
||||
)
|
||||
|
||||
assert result[0]["media_id"] == "recording-1"
|
||||
assert result[0]["music_type"] == "recording"
|
||||
assert result[0]["title"] == "晴天"
|
||||
chain.async_search.assert_awaited_once_with(query="晴天", limit=30)
|
||||
media_chain.return_value.async_search.assert_not_called()
|
||||
|
||||
|
||||
def test_recognize_music_returns_detail():
|
||||
"""音乐识别接口应按来源和 ID 经统一识别入口返回详情。"""
|
||||
from app.chain.media import MediaChain
|
||||
|
||||
Reference in New Issue
Block a user