mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2026-05-11 03:18:29 +08:00
🧑💻 使用 Ruff 包办所有格式化和检查 (#663)
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
from time import time
|
||||
|
||||
import respx
|
||||
import pytest
|
||||
from httpx import Response
|
||||
from nonebug.app import App
|
||||
from nonebot.compat import model_dump, type_validate_python
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
import respx
|
||||
|
||||
from .utils import get_file, get_json
|
||||
|
||||
@@ -12,7 +12,7 @@ from .utils import get_file, get_json
|
||||
@pytest.fixture
|
||||
def arknights(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
return platform_manager["arknights"](ProcessContext(DefaultClientManager()))
|
||||
|
||||
@@ -44,8 +44,8 @@ def monster_siren_list_1():
|
||||
|
||||
@respx.mock
|
||||
async def test_url_parse(app: App):
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.platform.arknights import Arknights, BulletinData, BulletinListItem, ArkBulletinResponse
|
||||
from nonebot_bison.platform.arknights import ArkBulletinResponse, Arknights, BulletinData, BulletinListItem
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
cid_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletin/1")
|
||||
|
||||
@@ -110,10 +110,10 @@ async def test_url_parse(app: App):
|
||||
assert p4.url == "http://www.baidu.com/"
|
||||
|
||||
|
||||
@pytest.mark.asyncio()
|
||||
@pytest.mark.asyncio
|
||||
async def test_get_date_in_bulletin(app: App):
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.platform.arknights import Arknights, BulletinListItem
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
arknights = Arknights(ProcessContext(DefaultClientManager()))
|
||||
assert (
|
||||
@@ -131,11 +131,11 @@ async def test_get_date_in_bulletin(app: App):
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio()
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_parse_with_breakline(app: App):
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.platform.arknights import Arknights, BulletinListItem
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
detail = get_json("arknights-detail-805")
|
||||
detail["data"]["header"] = ""
|
||||
@@ -158,7 +158,7 @@ async def test_parse_with_breakline(app: App):
|
||||
assert post.title == "【公开招募】 - 标签刷新通知"
|
||||
|
||||
|
||||
@pytest.mark.asyncio()
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_fetch_new(
|
||||
arknights,
|
||||
@@ -168,9 +168,9 @@ async def test_fetch_new(
|
||||
monster_siren_list_0,
|
||||
monster_siren_list_1,
|
||||
):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.platform.arknights import ArknightsPost
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
ak_list_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletinList?target=IOS")
|
||||
detail_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletin/5716")
|
||||
@@ -229,7 +229,7 @@ async def test_fetch_new(
|
||||
assert "brief" == post3.get_priority_themes()[0]
|
||||
|
||||
|
||||
@pytest.mark.render()
|
||||
@pytest.mark.render
|
||||
@respx.mock
|
||||
async def test_send_with_render(
|
||||
arknights,
|
||||
@@ -239,8 +239,8 @@ async def test_send_with_render(
|
||||
monster_siren_list_0,
|
||||
monster_siren_list_1,
|
||||
):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.platform.arknights import ArknightsPost
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
ak_list_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletinList?target=IOS")
|
||||
detail_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletin/8397")
|
||||
@@ -284,13 +284,13 @@ async def test_send_with_render(
|
||||
assert r
|
||||
|
||||
|
||||
@pytest.mark.render()
|
||||
@pytest.mark.render
|
||||
@respx.mock
|
||||
async def test_parse_title(
|
||||
app: App,
|
||||
):
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.platform.arknights import Arknights, BulletinListItem
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
detail_router = respx.get("https://ak-webview.hypergryph.com/api/game/bulletin/8397")
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
from datetime import datetime
|
||||
import random
|
||||
from time import time
|
||||
from datetime import datetime
|
||||
from typing import TYPE_CHECKING, Any
|
||||
from typing import TYPE_CHECKING, Any, ClassVar
|
||||
|
||||
import respx
|
||||
import pytest
|
||||
from loguru import logger
|
||||
from nonebug.app import App
|
||||
from httpx import URL, Response
|
||||
from freezegun import freeze_time
|
||||
from pytest_mock import MockerFixture
|
||||
from httpx import URL, Response
|
||||
from loguru import logger
|
||||
from nonebot.compat import model_dump, type_validate_python
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
from pytest_mock import MockerFixture
|
||||
import respx
|
||||
|
||||
from .utils import get_json
|
||||
|
||||
@@ -28,9 +28,9 @@ if TYPE_CHECKING:
|
||||
|
||||
@pytest.fixture
|
||||
def bilibili(app: App) -> "Bilibili":
|
||||
from nonebot_bison.utils import ProcessContext
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.platform.bilibili import BilibiliClientManager
|
||||
from nonebot_bison.utils import ProcessContext
|
||||
|
||||
return platform_manager["bilibili"](ProcessContext(BilibiliClientManager())) # type: ignore
|
||||
|
||||
@@ -62,7 +62,7 @@ def without_dynamic(app: App):
|
||||
async def test_reset_on_exception(app: App):
|
||||
from strenum import StrEnum
|
||||
|
||||
from nonebot_bison.platform.bilibili.fsm import FSM, StateGraph, Transition, ActionReturn, reset_on_exception
|
||||
from nonebot_bison.platform.bilibili.fsm import FSM, ActionReturn, StateGraph, Transition, reset_on_exception
|
||||
|
||||
class State(StrEnum):
|
||||
A = "A"
|
||||
@@ -146,12 +146,12 @@ async def test_reset_on_exception(app: App):
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_retry_for_352(app: App, mocker: MockerFixture):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, RawPost
|
||||
from nonebot_bison.platform.platform import NewMessage
|
||||
from nonebot_bison.platform.bilibili.platforms import ApiCode352Error
|
||||
from nonebot_bison.utils import ClientManager, ProcessContext, http_client
|
||||
from nonebot_bison.platform.bilibili.retry import RetryAddon, RetryState, _retry_fsm, retry_for_352
|
||||
from nonebot_bison.platform.platform import NewMessage
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import RawPost, Target
|
||||
from nonebot_bison.utils import ClientManager, ProcessContext, http_client
|
||||
|
||||
mocker.patch.object(random, "random", return_value=0.0) # 稳定触发RAISE阶段的随缘刷新
|
||||
|
||||
@@ -166,7 +166,7 @@ async def test_retry_for_352(app: App, mocker: MockerFixture):
|
||||
is_common = True
|
||||
schedule_interval = 10
|
||||
enable_tag = False
|
||||
categories = {}
|
||||
categories: ClassVar[dict] = {}
|
||||
has_target = True
|
||||
|
||||
raise352 = False
|
||||
@@ -422,7 +422,7 @@ async def test_dynamic_forword_deleted(bilibili: "Bilibili", bing_dy_list: list)
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_fetch_new_without_dynamic(bilibili, dummy_user_subinfo, without_dynamic):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
target = Target("161775300")
|
||||
post_router = respx.get(
|
||||
@@ -439,8 +439,8 @@ async def test_fetch_new_without_dynamic(bilibili, dummy_user_subinfo, without_d
|
||||
async def test_fetch_new(bilibili, dummy_user_subinfo):
|
||||
from nonebot.compat import model_dump, type_validate_python
|
||||
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.platform.bilibili.models import PostAPI
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
target = Target("161775300")
|
||||
|
||||
@@ -483,8 +483,8 @@ async def test_fetch_new(bilibili, dummy_user_subinfo):
|
||||
async def test_fetch_new_live_rcmd(bilibili: "Bilibili", dummy_user_subinfo):
|
||||
from nonebot.compat import model_dump, type_validate_python
|
||||
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.platform.bilibili.models import PostAPI
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
target = Target("13164144")
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import typing
|
||||
|
||||
import respx
|
||||
import pytest
|
||||
from httpx import Response
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
import respx
|
||||
|
||||
from .utils import get_json
|
||||
|
||||
@@ -14,7 +14,7 @@ if typing.TYPE_CHECKING:
|
||||
@pytest.fixture
|
||||
def bili_bangumi(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
return platform_manager["bilibili-bangumi"](ProcessContext(DefaultClientManager()))
|
||||
|
||||
@@ -38,7 +38,7 @@ async def test_parse_target(bili_bangumi: "BilibiliBangumi"):
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_fetch_bilibili_bangumi_status(bili_bangumi: "BilibiliBangumi", dummy_user_subinfo):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
bili_bangumi_router = respx.get("https://api.bilibili.com/pgc/review/user?media_id=28235413")
|
||||
bili_bangumi_detail_router = respx.get("https://api.bilibili.com/pgc/view/web/season?season_id=39719")
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
from copy import deepcopy
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import respx
|
||||
import pytest
|
||||
from httpx import Response
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
import respx
|
||||
|
||||
from .utils import get_json
|
||||
|
||||
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
|
||||
@pytest.fixture
|
||||
def bili_live(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
return platform_manager["bilibili-live"](ProcessContext(DefaultClientManager()))
|
||||
|
||||
@@ -33,7 +33,7 @@ def dummy_only_open_user_subinfo(app: App):
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_fetch_bililive_no_room(bili_live, dummy_only_open_user_subinfo):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
mock_bili_live_status = get_json("bili_live_status.json")
|
||||
mock_bili_live_status["data"] = {}
|
||||
@@ -53,7 +53,7 @@ async def test_fetch_bililive_no_room(bili_live, dummy_only_open_user_subinfo):
|
||||
@respx.mock
|
||||
async def test_fetch_first_live(bili_live, dummy_only_open_user_subinfo):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
mock_bili_live_status = get_json("bili_live_status.json")
|
||||
empty_bili_live_status = deepcopy(mock_bili_live_status)
|
||||
@@ -90,7 +90,7 @@ async def test_fetch_first_live(bili_live, dummy_only_open_user_subinfo):
|
||||
@respx.mock
|
||||
async def test_fetch_bililive_only_live_open(bili_live: "Bilibililive", dummy_only_open_user_subinfo):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
mock_bili_live_status = get_json("bili_live_status.json")
|
||||
|
||||
@@ -141,11 +141,11 @@ def dummy_only_title_user_subinfo(app: App):
|
||||
return UserSubInfo(user=user, categories=[2], tags=[])
|
||||
|
||||
|
||||
@pytest.mark.asyncio()
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_fetch_bililive_only_title_change(bili_live, dummy_only_title_user_subinfo):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
mock_bili_live_status = get_json("bili_live_status.json")
|
||||
target = Target("13164144")
|
||||
@@ -204,7 +204,7 @@ def dummy_only_close_user_subinfo(app: App):
|
||||
@respx.mock
|
||||
async def test_fetch_bililive_only_close(bili_live, dummy_only_close_user_subinfo):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
mock_bili_live_status = get_json("bili_live_status.json")
|
||||
target = Target("13164144")
|
||||
@@ -264,7 +264,7 @@ def dummy_bililive_user_subinfo(app: App):
|
||||
@respx.mock
|
||||
async def test_fetch_bililive_combo(bili_live, dummy_bililive_user_subinfo):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
mock_bili_live_status = get_json("bili_live_status.json")
|
||||
target = Target("13164144")
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import respx
|
||||
import pytest
|
||||
from httpx import Response
|
||||
from nonebug.app import App
|
||||
from nonebot.compat import type_validate_python
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
import respx
|
||||
|
||||
from .utils import get_json
|
||||
|
||||
@@ -24,9 +24,9 @@ def dummy_only_open_user_subinfo(app: App):
|
||||
|
||||
@pytest.fixture
|
||||
def ceobecanteen(app: App):
|
||||
from nonebot_bison.utils import ProcessContext
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.platform.ceobecanteen.platform import CeobeCanteenClientManager
|
||||
from nonebot_bison.utils import ProcessContext
|
||||
|
||||
return platform_manager["ceobecanteen"](ProcessContext(CeobeCanteenClientManager()))
|
||||
|
||||
@@ -71,7 +71,7 @@ def ceobecanteen_cookies_1() -> dict:
|
||||
return get_json("ceobecanteen_cookies_1.json")
|
||||
|
||||
|
||||
@pytest.mark.asyncio()
|
||||
@pytest.mark.asyncio
|
||||
async def test_parse_retweet(app: App):
|
||||
from nonebot_bison.platform.ceobecanteen.models import CookiesResponse
|
||||
|
||||
@@ -79,7 +79,7 @@ async def test_parse_retweet(app: App):
|
||||
assert cookie_with_retweet.data.cookies[0].item.retweeted
|
||||
|
||||
|
||||
@pytest.mark.render()
|
||||
@pytest.mark.render
|
||||
async def test_ceobe_snapshot(app: App, ceobecanteen: "CeobeCanteen"):
|
||||
from nonebot_bison.platform.ceobecanteen.models import CeobeCookie
|
||||
|
||||
@@ -113,7 +113,7 @@ async def test_ceobe_snapshot(app: App, ceobecanteen: "CeobeCanteen"):
|
||||
|
||||
|
||||
@pytest.mark.skip("极限测试, 不在CI中运行")
|
||||
@pytest.mark.asyncio()
|
||||
@pytest.mark.asyncio
|
||||
async def test_parse_crazy(app: App, ceobecanteen):
|
||||
from nonebot_plugin_saa import Image
|
||||
|
||||
@@ -139,7 +139,7 @@ async def test_parse_crazy(app: App, ceobecanteen):
|
||||
show(ext((await post4.generate_messages())[0][0])) # type: ignore
|
||||
|
||||
|
||||
@pytest.mark.asyncio()
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_batch_fetch_new_with_single(
|
||||
app: App,
|
||||
@@ -220,7 +220,7 @@ async def test_batch_fetch_new_with_single(
|
||||
await post3.generate_messages()
|
||||
|
||||
|
||||
@pytest.mark.asyncio()
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_parse_target_fuzzy(app: App, ceobecanteen: "CeobeCanteen", dummy_target, ceobecanteen_targets):
|
||||
from nonebot_bison.platform.ceobecanteen import CeobeCanteen
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import respx
|
||||
import pytest
|
||||
from httpx import Response
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
import respx
|
||||
|
||||
from .utils import get_json
|
||||
|
||||
@@ -9,7 +9,7 @@ from .utils import get_json
|
||||
@pytest.fixture
|
||||
def ff14(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
return platform_manager["ff14"](ProcessContext(DefaultClientManager()))
|
||||
|
||||
@@ -28,7 +28,7 @@ def ff14_newdata_json_1():
|
||||
@respx.mock
|
||||
async def test_fetch_new(ff14, dummy_user_subinfo, ff14_newdata_json_0, ff14_newdata_json_1):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
newdata = respx.get(
|
||||
"https://cqnews.web.sdo.com/api/news/newsList?gameCode=ff&CategoryCode=5309,5310,5311,5312,5313&pageIndex=0&pageSize=5"
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import time
|
||||
import typing
|
||||
|
||||
import respx
|
||||
import pytest
|
||||
from httpx import Response
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
import respx
|
||||
|
||||
from .utils import get_json
|
||||
|
||||
@@ -15,7 +15,7 @@ if typing.TYPE_CHECKING:
|
||||
@pytest.fixture
|
||||
def ncm_artist(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
return platform_manager["ncm-artist"](ProcessContext(DefaultClientManager()))
|
||||
|
||||
@@ -41,7 +41,7 @@ def ncm_artist_1(ncm_artist_raw: dict):
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_fetch_new(ncm_artist, ncm_artist_0, ncm_artist_1, dummy_user_subinfo):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
ncm_router = respx.get("https://music.163.com/api/artist/albums/32540734")
|
||||
ncm_router.mock(return_value=Response(200, json=ncm_artist_0))
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import time
|
||||
import typing
|
||||
|
||||
import respx
|
||||
import pytest
|
||||
from httpx import Response
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
import respx
|
||||
|
||||
from .utils import get_json
|
||||
|
||||
@@ -15,7 +15,7 @@ if typing.TYPE_CHECKING:
|
||||
@pytest.fixture
|
||||
def ncm_radio(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
return platform_manager["ncm-radio"](ProcessContext(DefaultClientManager()))
|
||||
|
||||
@@ -42,7 +42,7 @@ def ncm_radio_1(ncm_radio_raw: dict):
|
||||
@respx.mock
|
||||
async def test_fetch_new(ncm_radio, ncm_radio_0, ncm_radio_1, dummy_user_subinfo):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
ncm_router = respx.post("http://music.163.com/api/dj/program/byradio")
|
||||
ncm_router.mock(return_value=Response(200, json=ncm_radio_0))
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
from time import time
|
||||
from typing import Any
|
||||
from typing import Any, ClassVar
|
||||
|
||||
import pytest
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
|
||||
now = time()
|
||||
passed = now - 3 * 60 * 60
|
||||
|
||||
raw_post_list_1 = [{"id": 1, "text": "p1", "date": now, "tags": ["tag1"], "category": 1}]
|
||||
|
||||
raw_post_list_2 = raw_post_list_1 + [
|
||||
raw_post_list_2 = [
|
||||
*raw_post_list_1,
|
||||
{"id": 2, "text": "p2", "date": now, "tags": ["tag1"], "category": 1},
|
||||
{"id": 3, "text": "p3", "date": now, "tags": ["tag2"], "category": 2},
|
||||
{"id": 4, "text": "p4", "date": now, "tags": ["tag2"], "category": 3},
|
||||
@@ -36,9 +37,9 @@ def user_info_factory(app: App, dummy_user):
|
||||
|
||||
@pytest.fixture
|
||||
def mock_platform_without_cats_tags(app: App):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, RawPost
|
||||
from nonebot_bison.platform.platform import NewMessage
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import RawPost, Target
|
||||
|
||||
class MockPlatform(NewMessage):
|
||||
platform_name = "mock_platform"
|
||||
@@ -47,7 +48,7 @@ def mock_platform_without_cats_tags(app: App):
|
||||
is_common = True
|
||||
schedule_interval = 10
|
||||
enable_tag = False
|
||||
categories = {}
|
||||
categories: ClassVar[dict] = {}
|
||||
has_target = True
|
||||
|
||||
sub_index = 0
|
||||
@@ -83,15 +84,15 @@ def mock_platform_without_cats_tags(app: App):
|
||||
|
||||
@pytest.fixture
|
||||
def mock_platform(app: App):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.utils import Site
|
||||
from nonebot_bison.platform.platform import NewMessage
|
||||
from nonebot_bison.types import Tag, Target, RawPost, Category
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Category, RawPost, Tag, Target
|
||||
from nonebot_bison.utils import Site
|
||||
|
||||
class MockSite(Site):
|
||||
name = "mock_site"
|
||||
schedule_type = "interval"
|
||||
schedule_setting = {"seconds": 100}
|
||||
schedule_setting: ClassVar[dict] = {"seconds": 100}
|
||||
|
||||
class MockPlatform(NewMessage):
|
||||
platform_name = "mock_platform"
|
||||
@@ -101,7 +102,7 @@ def mock_platform(app: App):
|
||||
enable_tag = True
|
||||
has_target = True
|
||||
site = MockSite
|
||||
categories = {
|
||||
categories: ClassVar[dict] = {
|
||||
Category(1): "转发",
|
||||
Category(2): "视频",
|
||||
}
|
||||
@@ -150,16 +151,16 @@ def mock_site(app):
|
||||
class MockSite(Site):
|
||||
name = "mock_site"
|
||||
schedule_type = "interval"
|
||||
schedule_setting = {"seconds": 100}
|
||||
schedule_setting: ClassVar[dict] = {"seconds": 100}
|
||||
|
||||
return MockSite
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_platform_no_target(app: App, mock_site):
|
||||
from nonebot_bison.platform.platform import CategoryNotSupport, NewMessage
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Tag, Target, RawPost, Category
|
||||
from nonebot_bison.platform.platform import NewMessage, CategoryNotSupport
|
||||
from nonebot_bison.types import Category, RawPost, Tag, Target
|
||||
|
||||
class MockPlatform(NewMessage):
|
||||
platform_name = "mock_platform"
|
||||
@@ -169,7 +170,7 @@ def mock_platform_no_target(app: App, mock_site):
|
||||
site = mock_site
|
||||
enable_tag = True
|
||||
has_target = False
|
||||
categories = {Category(1): "转发", Category(2): "视频", Category(3): "不支持"}
|
||||
categories: ClassVar[dict] = {Category(1): "转发", Category(2): "视频", Category(3): "不支持"}
|
||||
|
||||
sub_index = 0
|
||||
|
||||
@@ -212,9 +213,9 @@ def mock_platform_no_target(app: App, mock_site):
|
||||
|
||||
@pytest.fixture
|
||||
def mock_platform_no_target_2(app: App, mock_site):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.platform.platform import NewMessage
|
||||
from nonebot_bison.types import Tag, Target, RawPost, Category
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Category, RawPost, Tag, Target
|
||||
|
||||
class MockPlatform(NewMessage):
|
||||
platform_name = "mock_platform"
|
||||
@@ -224,7 +225,7 @@ def mock_platform_no_target_2(app: App, mock_site):
|
||||
is_common = True
|
||||
enable_tag = True
|
||||
has_target = False
|
||||
categories = {
|
||||
categories: ClassVar[dict] = {
|
||||
Category(4): "leixing4",
|
||||
Category(5): "leixing5",
|
||||
}
|
||||
@@ -259,7 +260,8 @@ def mock_platform_no_target_2(app: App, mock_site):
|
||||
async def get_sub_list(cls, _: "Target"):
|
||||
list_1 = [{"id": 5, "text": "p5", "date": now, "tags": ["tag1"], "category": 4}]
|
||||
|
||||
list_2 = list_1 + [
|
||||
list_2 = [
|
||||
*list_1,
|
||||
{"id": 6, "text": "p6", "date": now, "tags": ["tag1"], "category": 4},
|
||||
{"id": 7, "text": "p7", "date": now, "tags": ["tag2"], "category": 5},
|
||||
]
|
||||
@@ -274,9 +276,9 @@ def mock_platform_no_target_2(app: App, mock_site):
|
||||
|
||||
@pytest.fixture
|
||||
def mock_status_change(app: App):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.platform.platform import StatusChange
|
||||
from nonebot_bison.types import Target, RawPost, Category
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Category, RawPost, Target
|
||||
|
||||
class MockPlatform(StatusChange):
|
||||
platform_name = "mock_platform"
|
||||
@@ -285,9 +287,9 @@ def mock_status_change(app: App):
|
||||
is_common = True
|
||||
enable_tag = False
|
||||
schedule_type = "interval"
|
||||
schedule_kw = {"seconds": 10}
|
||||
schedule_kw: ClassVar[dict] = {"seconds": 10}
|
||||
has_target = False
|
||||
categories = {
|
||||
categories: ClassVar[dict] = {
|
||||
Category(1): "转发",
|
||||
Category(2): "视频",
|
||||
}
|
||||
@@ -323,8 +325,8 @@ def mock_status_change(app: App):
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_new_message_target_without_cats_tags(mock_platform_without_cats_tags, user_info_factory):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
res1 = await mock_platform_without_cats_tags(ProcessContext(DefaultClientManager())).fetch_new_post(
|
||||
SubUnit(Target("dummy"), [user_info_factory([1, 2], [])])
|
||||
@@ -344,8 +346,8 @@ async def test_new_message_target_without_cats_tags(mock_platform_without_cats_t
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_new_message_target(mock_platform, user_info_factory):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
res1 = await mock_platform(ProcessContext(DefaultClientManager())).fetch_new_post(
|
||||
SubUnit(Target("dummy"), [user_info_factory([1, 2], [])])
|
||||
@@ -379,8 +381,8 @@ async def test_new_message_target(mock_platform, user_info_factory):
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_new_message_no_target(mock_platform_no_target, user_info_factory):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
res1 = await mock_platform_no_target(ProcessContext(DefaultClientManager())).fetch_new_post(
|
||||
SubUnit(Target("dummy"), [user_info_factory([1, 2], [])])
|
||||
@@ -418,8 +420,8 @@ async def test_new_message_no_target(mock_platform_no_target, user_info_factory)
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_status_change(mock_status_change, user_info_factory):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
res1 = await mock_status_change(ProcessContext(DefaultClientManager())).fetch_new_post(
|
||||
SubUnit(Target("dummy"), [user_info_factory([1, 2], [])])
|
||||
@@ -458,9 +460,9 @@ async def test_group(
|
||||
mock_platform_no_target_2,
|
||||
user_info_factory,
|
||||
):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.platform.platform import make_no_target_group
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
dummy = Target("dummy")
|
||||
|
||||
@@ -482,11 +484,11 @@ async def test_group(
|
||||
async def test_batch_fetch_new_message(app: App):
|
||||
from nonebot_plugin_saa import TargetQQGroup
|
||||
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.utils import DefaultClientManager
|
||||
from nonebot_bison.platform.platform import NewMessage
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import RawPost, SubUnit, Target, UserSubInfo
|
||||
from nonebot_bison.utils import DefaultClientManager
|
||||
from nonebot_bison.utils.context import ProcessContext
|
||||
from nonebot_bison.types import Target, RawPost, SubUnit, UserSubInfo
|
||||
|
||||
class BatchNewMessage(NewMessage):
|
||||
platform_name = "mock_platform"
|
||||
@@ -495,7 +497,7 @@ async def test_batch_fetch_new_message(app: App):
|
||||
is_common = True
|
||||
schedule_interval = 10
|
||||
enable_tag = False
|
||||
categories = {}
|
||||
categories: ClassVar[dict] = {}
|
||||
has_target = True
|
||||
|
||||
sub_index = 0
|
||||
@@ -569,11 +571,11 @@ async def test_batch_fetch_new_message(app: App):
|
||||
async def test_batch_fetch_compare_status(app: App):
|
||||
from nonebot_plugin_saa import TargetQQGroup
|
||||
|
||||
from nonebot_bison.platform.platform import StatusChange
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Category, RawPost, SubUnit, Target, UserSubInfo
|
||||
from nonebot_bison.utils import DefaultClientManager
|
||||
from nonebot_bison.utils.context import ProcessContext
|
||||
from nonebot_bison.platform.platform import StatusChange
|
||||
from nonebot_bison.types import Target, RawPost, SubUnit, Category, UserSubInfo
|
||||
|
||||
class BatchStatusChange(StatusChange):
|
||||
platform_name = "mock_platform"
|
||||
@@ -582,9 +584,9 @@ async def test_batch_fetch_compare_status(app: App):
|
||||
is_common = True
|
||||
enable_tag = False
|
||||
schedule_type = "interval"
|
||||
schedule_kw = {"seconds": 10}
|
||||
schedule_kw: ClassVar[dict] = {"seconds": 10}
|
||||
has_target = True
|
||||
categories = {
|
||||
categories: ClassVar[dict] = {
|
||||
Category(1): "转发",
|
||||
Category(2): "视频",
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
|
||||
from .utils import get_json
|
||||
|
||||
@@ -13,7 +13,7 @@ def test_cases():
|
||||
@pytest.mark.asyncio
|
||||
async def test_filter_user_custom_tag(app: App, test_cases):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
bilibili = platform_manager["bilibili"](ProcessContext(DefaultClientManager()))
|
||||
for case in test_cases:
|
||||
@@ -25,7 +25,7 @@ async def test_filter_user_custom_tag(app: App, test_cases):
|
||||
@pytest.mark.asyncio
|
||||
async def test_tag_separator(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
bilibili = platform_manager["bilibili"](ProcessContext(DefaultClientManager()))
|
||||
tags = ["~111", "222", "333", "~444", "555"]
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import typing
|
||||
from datetime import datetime
|
||||
import typing
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
import pytz
|
||||
import respx
|
||||
import pytest
|
||||
from httpx import Response
|
||||
from nonebug.app import App
|
||||
import pytest
|
||||
import pytz
|
||||
import respx
|
||||
|
||||
from .utils import get_file
|
||||
|
||||
@@ -35,7 +35,7 @@ def user_info_factory(app: App, dummy_user):
|
||||
@pytest.fixture
|
||||
def rss(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
return platform_manager["rss"](ProcessContext(DefaultClientManager()))
|
||||
|
||||
@@ -71,7 +71,7 @@ async def test_fetch_new_1(
|
||||
user_info_factory,
|
||||
update_time_feed_1,
|
||||
):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
## 标题重复的情况
|
||||
rss_router = respx.get("https://rsshub.app/twitter/user/ArknightsStaff")
|
||||
@@ -113,7 +113,7 @@ async def test_fetch_new_2(
|
||||
user_info_factory,
|
||||
update_time_feed_2,
|
||||
):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
## 标题与正文不重复的情况
|
||||
rss_router = respx.get("https://www.ruanyifeng.com/blog/atom.xml")
|
||||
@@ -148,7 +148,7 @@ async def test_fetch_new_3(
|
||||
user_info_factory,
|
||||
update_time_feed_3,
|
||||
):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
## 只有<updated>没有<published>
|
||||
rss_router = respx.get("https://github.com/R3nzTheCodeGOD/R3nzSkin/releases.atom")
|
||||
@@ -172,7 +172,7 @@ async def test_fetch_new_4(
|
||||
rss,
|
||||
user_info_factory,
|
||||
):
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
## 没有日期信息的情况
|
||||
rss_router = respx.get("https://rsshub.app/wallhaven/hot?limit=5")
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import typing
|
||||
from datetime import datetime
|
||||
import typing
|
||||
|
||||
import respx
|
||||
import pytest
|
||||
import feedparser
|
||||
from pytz import timezone
|
||||
from httpx import AsyncClient, Response
|
||||
from nonebug.app import App
|
||||
from httpx import Response, AsyncClient
|
||||
import pytest
|
||||
from pytz import timezone
|
||||
import respx
|
||||
|
||||
from .utils import get_file, get_json
|
||||
|
||||
@@ -19,7 +19,7 @@ image_cdn_router = respx.route(host__regex=r"wx\d.sinaimg.cn", path__startswith=
|
||||
@pytest.fixture
|
||||
def weibo(app: App):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.utils import ProcessContext, DefaultClientManager
|
||||
from nonebot_bison.utils import DefaultClientManager, ProcessContext
|
||||
|
||||
return platform_manager["weibo"](ProcessContext(DefaultClientManager()))
|
||||
|
||||
@@ -42,7 +42,7 @@ async def test_get_name(weibo):
|
||||
@respx.mock
|
||||
async def test_fetch_new(weibo, dummy_user_subinfo):
|
||||
from nonebot_bison.post import Post
|
||||
from nonebot_bison.types import Target, SubUnit
|
||||
from nonebot_bison.types import SubUnit, Target
|
||||
|
||||
ak_list_router = respx.get("https://m.weibo.cn/api/container/getIndex?containerid=1076036279793937")
|
||||
detail_router = respx.get("https://m.weibo.cn/statuses/extend?id=4649031014551911")
|
||||
@@ -184,7 +184,7 @@ async def test_rsshub_compare(weibo):
|
||||
|
||||
test_post = {
|
||||
"mblog": {
|
||||
"text": ( # noqa
|
||||
"text": (
|
||||
'<a href="https://m.weibo.cn/search?containerid=231522type%3D1%26t%3D10%26q%3D%23%E5%88%9A%E5%87%BA%E7%94%9F%E7%9A%84%E5%B0%8F%E7%BE%8A%E9%A9%BC%E9%95%BF%E5%95%A5%E6%A0%B7%23&extparam=%23%E5%88%9A%E5%87%BA%E7%94%9F%E7%9A%84%E5%B0%8F%E7%BE%8A%E9%A9%BC%E9%95%BF%E5%95%A5%E6%A0%B7%23&luicode=10000011&lfid=1076036003966749"'
|
||||
' data-hide=""><span class="surl-text">#刚出生的小羊驼长啥样#</span></a> <br />小羊驼三三来也<span'
|
||||
' class="url-icon"><img alt=[好喜欢]'
|
||||
|
||||
Reference in New Issue
Block a user