mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-02 00:56:10 +08:00
163 lines
5.7 KiB
Python
163 lines
5.7 KiB
Python
import pytest
|
||
import respx
|
||
from httpx import Response
|
||
from nonebug.app import App
|
||
|
||
from .utils import get_file, get_json
|
||
|
||
|
||
@pytest.fixture
|
||
def arknights(app: App):
|
||
from nonebot_bison.platform import platform_manager
|
||
|
||
return platform_manager["arknights"]
|
||
|
||
|
||
@pytest.fixture(scope="module")
|
||
def arknights_list_0():
|
||
return get_json("arknights_list_0.json")
|
||
|
||
|
||
@pytest.fixture(scope="module")
|
||
def arknights_list__1():
|
||
return get_json("arknights_list_-1.json")
|
||
|
||
|
||
@pytest.fixture(scope="module")
|
||
def arknights_list_1():
|
||
return get_json("arknights_list_1.json")
|
||
|
||
|
||
@pytest.fixture(scope="module")
|
||
def monster_siren_list_0():
|
||
return get_json("monster-siren_list_0.json")
|
||
|
||
|
||
@pytest.fixture(scope="module")
|
||
def monster_siren_list_1():
|
||
return get_json("monster-siren_list_1.json")
|
||
|
||
|
||
@pytest.mark.asyncio
|
||
@respx.mock
|
||
async def test_fetch_new(
|
||
arknights,
|
||
dummy_user_subinfo,
|
||
arknights_list_0,
|
||
arknights_list__1,
|
||
monster_siren_list_0,
|
||
monster_siren_list_1,
|
||
):
|
||
ak_list_router = respx.get(
|
||
"https://ak-conf.hypergryph.com/config/prod/announce_meta/IOS/announcement.meta.json"
|
||
)
|
||
detail_router = respx.get(
|
||
"https://ak.hycdn.cn/announce/IOS/announcement/807_1640060583.html"
|
||
)
|
||
version_router = respx.get(
|
||
"https://ak-conf.hypergryph.com/config/prod/official/IOS/version"
|
||
)
|
||
preannouncement_router = respx.get(
|
||
"https://ak-conf.hypergryph.com/config/prod/announce_meta/IOS/preannouncement.meta.json"
|
||
)
|
||
monster_siren_router = respx.get("https://monster-siren.hypergryph.com/api/news")
|
||
terra_list = respx.get("https://terra-historicus.hypergryph.com/api/recentUpdate")
|
||
ak_list_router.mock(return_value=Response(200, json=arknights_list__1))
|
||
detail_router.mock(
|
||
return_value=Response(200, text=get_file("arknights-detail-807"))
|
||
)
|
||
version_router.mock(
|
||
return_value=Response(200, json=get_json("arknights-version-0.json"))
|
||
)
|
||
preannouncement_router.mock(
|
||
return_value=Response(200, json=get_json("arknights-pre-0.json"))
|
||
)
|
||
monster_siren_router.mock(return_value=Response(200, json=monster_siren_list_0))
|
||
terra_list.mock(return_value=Response(200, json=get_json("terra-hist-0.json")))
|
||
target = ""
|
||
res = await arknights.fetch_new_post(target, [dummy_user_subinfo])
|
||
assert ak_list_router.called
|
||
assert len(res) == 0
|
||
assert not detail_router.called
|
||
mock_data = arknights_list_0
|
||
ak_list_router.mock(return_value=Response(200, json=mock_data))
|
||
res3 = await arknights.fetch_new_post(target, [dummy_user_subinfo])
|
||
assert len(res3[0][1]) == 1
|
||
assert detail_router.called
|
||
post = res3[0][1][0]
|
||
assert post.target_type == "arknights"
|
||
assert post.text == ""
|
||
assert post.url == ""
|
||
assert post.target_name == "明日方舟游戏内公告"
|
||
assert len(post.pics) == 1
|
||
# assert(post.pics == ['https://ak-fs.hypergryph.com/announce/images/20210623/e6f49aeb9547a2278678368a43b95b07.jpg'])
|
||
print(res3[0][1])
|
||
await post.generate_messages()
|
||
terra_list.mock(return_value=Response(200, json=get_json("terra-hist-1.json")))
|
||
res = await arknights.fetch_new_post(target, [dummy_user_subinfo])
|
||
assert len(res) == 1
|
||
post = res[0][1][0]
|
||
assert post.target_type == "terra-historicus"
|
||
assert post.text == "123罗德岛!? - 「掠风」篇"
|
||
assert post.url == "https://terra-historicus.hypergryph.com/comic/6253/episode/4938"
|
||
assert post.pics == [
|
||
"https://web.hycdn.cn/comic/pic/20220507/ab8a2ff408ec7d587775aed70b178ec0.png"
|
||
]
|
||
|
||
|
||
@pytest.mark.render
|
||
@respx.mock
|
||
async def test_send_with_render(
|
||
arknights,
|
||
dummy_user_subinfo,
|
||
arknights_list_0,
|
||
arknights_list_1,
|
||
monster_siren_list_0,
|
||
monster_siren_list_1,
|
||
):
|
||
ak_list_router = respx.get(
|
||
"https://ak-conf.hypergryph.com/config/prod/announce_meta/IOS/announcement.meta.json"
|
||
)
|
||
detail_router = respx.get(
|
||
"https://ak.hycdn.cn/announce/IOS/announcement/805_1640074952.html"
|
||
)
|
||
version_router = respx.get(
|
||
"https://ak-conf.hypergryph.com/config/prod/official/IOS/version"
|
||
)
|
||
preannouncement_router = respx.get(
|
||
"https://ak-conf.hypergryph.com/config/prod/announce_meta/IOS/preannouncement.meta.json"
|
||
)
|
||
monster_siren_router = respx.get("https://monster-siren.hypergryph.com/api/news")
|
||
terra_list = respx.get("https://terra-historicus.hypergryph.com/api/recentUpdate")
|
||
ak_list_router.mock(return_value=Response(200, json=arknights_list_0))
|
||
detail_router.mock(
|
||
return_value=Response(200, text=get_file("arknights-detail-805"))
|
||
)
|
||
version_router.mock(
|
||
return_value=Response(200, json=get_json("arknights-version-0.json"))
|
||
)
|
||
preannouncement_router.mock(
|
||
return_value=Response(200, json=get_json("arknights-pre-0.json"))
|
||
)
|
||
monster_siren_router.mock(return_value=Response(200, json=monster_siren_list_0))
|
||
terra_list.mock(return_value=Response(200, json=get_json("terra-hist-0.json")))
|
||
target = ""
|
||
res = await arknights.fetch_new_post(target, [dummy_user_subinfo])
|
||
assert ak_list_router.called
|
||
assert len(res) == 0
|
||
assert not detail_router.called
|
||
mock_data = arknights_list_1
|
||
ak_list_router.mock(return_value=Response(200, json=mock_data))
|
||
res3 = await arknights.fetch_new_post(target, [dummy_user_subinfo])
|
||
assert len(res3[0][1]) == 1
|
||
assert detail_router.called
|
||
post = res3[0][1][0]
|
||
assert post.target_type == "arknights"
|
||
assert post.text == ""
|
||
assert post.url == ""
|
||
assert post.target_name == "明日方舟游戏内公告"
|
||
assert len(post.pics) == 1
|
||
# assert(post.pics == ['https://ak-fs.hypergryph.com/announce/images/20210623/e6f49aeb9547a2278678368a43b95b07.jpg'])
|
||
print(res3[0][1])
|
||
r = await post.generate_messages()
|