nonebot-bison/tests/platforms/test_bilibili_bangumi.py
2022-10-16 20:48:14 +08:00

65 lines
2.1 KiB
Python

import typing
import pytest
import respx
from httpx import AsyncClient, Response
from nonebug.app import App
from .utils import get_json
if typing.TYPE_CHECKING:
from nonebot_bison.platform.bilibili import BilibiliBangumi
@pytest.fixture
def bili_bangumi(app: App):
from nonebot_bison.platform import platform_manager
return platform_manager["bilibili-bangumi"](AsyncClient())
@pytest.mark.asyncio
@respx.mock
async def test_fetch_bilibili_bangumi_status(
bili_bangumi: "BilibiliBangumi", dummy_user_subinfo
):
from nonebot_bison.types import Target
bili_bangumi_router = respx.get(
"https://api.bilibili.com/pgc/review/user?media_id=28235413"
)
bili_bangumi_detail_router = respx.get(
"http://api.bilibili.com/pgc/view/web/season?season_id=39719"
)
bili_bangumi_router.mock(
return_value=Response(200, json=get_json("bilibili-gangumi-hanhua0.json"))
)
bilibili_main_page_router = respx.get("https://www.bilibili.com/")
bilibili_main_page_router.mock(return_value=Response(200))
target = Target("28235413")
res = await bili_bangumi.fetch_new_post(target, [dummy_user_subinfo])
assert len(res) == 0
res = await bili_bangumi.fetch_new_post(target, [dummy_user_subinfo])
assert len(res) == 0
bili_bangumi_router.mock(
return_value=Response(200, json=get_json("bilibili-gangumi-hanhua1.json"))
)
bili_bangumi_detail_router.mock(
return_value=Response(
200, json=get_json("bilibili-gangumi-hanhua1-detail.json")
)
)
res2 = await bili_bangumi.fetch_new_post(target, [dummy_user_subinfo])
post = res2[0][1][0]
assert post.target_type == "Bilibili剧集"
assert post.text == "《汉化日记 第三季》第2话 什么是战区导弹防御系统工作日"
assert post.url == "https://www.bilibili.com/bangumi/play/ep519207"
assert post.target_name == "汉化日记 第三季"
assert post.pics == [
"http://i0.hdslb.com/bfs/archive/ea0a302c954f9dbc3d593e676486396c551529c9.jpg"
]
assert post.compress == True