From 147f858a314ddfff8789934620b850aceb5da094 Mon Sep 17 00:00:00 2001 From: Azide Date: Mon, 19 Jun 2023 00:30:11 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8DB=E7=AB=99=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E6=B2=A1=E6=9C=89=E5=8A=A8=E6=80=81=E7=9A=84=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=97=B6=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?(=E7=AC=AC=E4=BA=8C=E6=AC=A1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_bison/platform/bilibili.py | 2 +- tests/platforms/test_bilibili.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/nonebot_bison/platform/bilibili.py b/nonebot_bison/platform/bilibili.py index bfe78dc..9637c8f 100644 --- a/nonebot_bison/platform/bilibili.py +++ b/nonebot_bison/platform/bilibili.py @@ -100,7 +100,7 @@ class Bilibili(NewMessage): res.raise_for_status() res_dict = res.json() if res_dict["code"] == 0: - return res_dict["data"].get("cards") + return res_dict["data"].get("cards", []) else: raise ApiError(res.request.url) diff --git a/tests/platforms/test_bilibili.py b/tests/platforms/test_bilibili.py index 0dda79a..8358318 100644 --- a/tests/platforms/test_bilibili.py +++ b/tests/platforms/test_bilibili.py @@ -27,6 +27,20 @@ def bilibili(app: App): return platform_manager["bilibili"](ProcessContext(), AsyncClient()) +@pytest.fixture +def without_dynamic(app: App): + return { + "code": 0, + "msg": "", + "message": "", + "data": { + "has_more": 0, + "next_offset": 0, + "_gt_": 0, + }, + } + + @pytest.mark.asyncio async def test_video_forward(bilibili, bing_dy_list): post = await bilibili.parse(bing_dy_list[1]) @@ -58,6 +72,21 @@ async def test_dynamic_forward(bilibili, bing_dy_list): ) +@pytest.mark.asyncio +@respx.mock +async def test_fetch_new_without_dynamic(bilibili, dummy_user_subinfo, without_dynamic): + post_router = respx.get( + "https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?host_uid=161775300&offset=0&need_top=0" + ) + post_router.mock(return_value=Response(200, json=without_dynamic)) + bilibili_main_page_router = respx.get("https://www.bilibili.com/") + bilibili_main_page_router.mock(return_value=Response(200)) + target = "161775300" + res = await bilibili.fetch_new_post(target, [dummy_user_subinfo]) + assert post_router.called + assert len(res) == 0 + + @pytest.mark.asyncio @respx.mock async def test_fetch_new(bilibili, dummy_user_subinfo):