mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-04 02:26:11 +08:00
🐛 config 中添加 clear_db 方法,用于清空数据库内容;添加clear_db fixture,用于在单测前后清空数据库
This commit is contained in:
parent
aa897939d9
commit
1d1b9f6574
@ -363,5 +363,16 @@ class DBConfig:
|
|||||||
res.sort(key=lambda x: (x.target.platform_name, x.cookie_id, x.target_id))
|
res.sort(key=lambda x: (x.target.platform_name, x.cookie_id, x.target_id))
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
async def clear_db(self):
|
||||||
|
"""清空数据库"""
|
||||||
|
async with create_session() as sess:
|
||||||
|
await sess.execute(delete(User))
|
||||||
|
await sess.execute(delete(Target))
|
||||||
|
await sess.execute(delete(ScheduleTimeWeight))
|
||||||
|
await sess.execute(delete(Subscribe))
|
||||||
|
await sess.execute(delete(Cookie))
|
||||||
|
await sess.execute(delete(CookieTarget))
|
||||||
|
await sess.commit()
|
||||||
|
|
||||||
|
|
||||||
config = DBConfig()
|
config = DBConfig()
|
||||||
|
@ -123,3 +123,13 @@ async def _no_browser(app: App, mocker: MockerFixture):
|
|||||||
|
|
||||||
mocker.patch.object(plugin_config, "bison_use_browser", False)
|
mocker.patch.object(plugin_config, "bison_use_browser", False)
|
||||||
mocker.patch("nonebot_bison.platform.unavailable_paltforms", _get_unavailable_platforms())
|
mocker.patch("nonebot_bison.platform.unavailable_paltforms", _get_unavailable_platforms())
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
async def _clear_db():
|
||||||
|
from nonebot_bison.config import config
|
||||||
|
|
||||||
|
await config.clear_db()
|
||||||
|
yield
|
||||||
|
await config.clear_db()
|
||||||
|
return
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
|
import pytest
|
||||||
from nonebug.app import App
|
from nonebug.app import App
|
||||||
from pytest_mock import MockerFixture
|
from pytest_mock import MockerFixture
|
||||||
|
|
||||||
@ -30,7 +31,8 @@ async def test_add_cookie_rule(app: App, mocker: MockerFixture):
|
|||||||
ctx.should_pass_permission()
|
ctx.should_pass_permission()
|
||||||
|
|
||||||
|
|
||||||
async def test_add_cookie_target_no_cookie(app: App, mocker: MockerFixture):
|
@pytest.mark.usefixtures("_clear_db")
|
||||||
|
async def test_add_cookie_target_no_cookie(app: App):
|
||||||
from nonebot.adapters.onebot.v11.bot import Bot
|
from nonebot.adapters.onebot.v11.bot import Bot
|
||||||
from nonebot.adapters.onebot.v11.message import Message
|
from nonebot.adapters.onebot.v11.message import Message
|
||||||
|
|
||||||
@ -80,7 +82,8 @@ async def test_add_cookie_target_no_cookie(app: App, mocker: MockerFixture):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_add_cookie(app: App, mocker: MockerFixture):
|
@pytest.mark.usefixtures("_clear_db")
|
||||||
|
async def test_add_cookie(app: App):
|
||||||
from nonebot.adapters.onebot.v11.bot import Bot
|
from nonebot.adapters.onebot.v11.bot import Bot
|
||||||
from nonebot.adapters.onebot.v11.message import Message
|
from nonebot.adapters.onebot.v11.message import Message
|
||||||
|
|
||||||
@ -192,7 +195,6 @@ async def test_add_cookie(app: App, mocker: MockerFixture):
|
|||||||
|
|
||||||
|
|
||||||
async def test_add_cookie_target_no_target(app: App, mocker: MockerFixture):
|
async def test_add_cookie_target_no_target(app: App, mocker: MockerFixture):
|
||||||
|
|
||||||
from nonebot.adapters.onebot.v11.bot import Bot
|
from nonebot.adapters.onebot.v11.bot import Bot
|
||||||
from nonebot.adapters.onebot.v11.message import Message
|
from nonebot.adapters.onebot.v11.message import Message
|
||||||
|
|
||||||
|
@ -1,10 +1,72 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
|
import pytest
|
||||||
from nonebug.app import App
|
from nonebug.app import App
|
||||||
|
|
||||||
from ..utils import fake_superuser, fake_private_message_event
|
from ..utils import fake_superuser, fake_private_message_event
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("_clear_db")
|
||||||
|
async def test_del_cookie(app: App):
|
||||||
|
from nonebug_saa import should_send_saa
|
||||||
|
from nonebot.adapters.onebot.v11.bot import Bot
|
||||||
|
from nonebot.adapters.onebot.v11.message import Message
|
||||||
|
from nonebot_plugin_saa import TargetQQGroup, MessageFactory
|
||||||
|
|
||||||
|
from nonebot_bison.config import config
|
||||||
|
from nonebot_bison.config.db_model import Cookie
|
||||||
|
from nonebot_bison.types import Target as T_Target
|
||||||
|
from nonebot_bison.sub_manager import del_cookie_matcher
|
||||||
|
|
||||||
|
async with app.test_matcher(del_cookie_matcher) as ctx:
|
||||||
|
bot = ctx.create_bot(base=Bot)
|
||||||
|
event = fake_private_message_event(
|
||||||
|
message=Message("删除cookie"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id
|
||||||
|
)
|
||||||
|
ctx.receive_event(bot, event)
|
||||||
|
ctx.should_pass_rule()
|
||||||
|
ctx.should_pass_permission()
|
||||||
|
ctx.should_call_send(event, "暂无已添加的 Cookie\n请使用“添加cookie”命令添加", True)
|
||||||
|
|
||||||
|
async with app.test_matcher(del_cookie_matcher) as ctx:
|
||||||
|
bot = ctx.create_bot(base=Bot)
|
||||||
|
target = T_Target("weibo_id")
|
||||||
|
platform_name = "weibo"
|
||||||
|
await config.add_subscribe(
|
||||||
|
TargetQQGroup(group_id=123),
|
||||||
|
target=target,
|
||||||
|
target_name="weibo_name",
|
||||||
|
platform_name=platform_name,
|
||||||
|
cats=[],
|
||||||
|
tags=[],
|
||||||
|
)
|
||||||
|
await config.add_cookie(Cookie(content=json.dumps({"cookie": "test"}), site_name="weibo.com"))
|
||||||
|
|
||||||
|
event_1 = fake_private_message_event(
|
||||||
|
message=Message("删除cookie"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id
|
||||||
|
)
|
||||||
|
ctx.receive_event(bot, event_1)
|
||||||
|
ctx.should_pass_rule()
|
||||||
|
ctx.should_pass_permission()
|
||||||
|
should_send_saa(
|
||||||
|
ctx,
|
||||||
|
MessageFactory(
|
||||||
|
"已添加的 Cookie 为:\n1 weibo.com unnamed cookie"
|
||||||
|
" 0个关联\n请输入要删除的 Cookie 的序号\n输入'取消'中止"
|
||||||
|
),
|
||||||
|
bot,
|
||||||
|
event=event_1,
|
||||||
|
)
|
||||||
|
event_2 = fake_private_message_event(
|
||||||
|
message=Message("1"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id
|
||||||
|
)
|
||||||
|
ctx.receive_event(bot, event_2)
|
||||||
|
ctx.should_pass_rule()
|
||||||
|
ctx.should_pass_permission()
|
||||||
|
ctx.should_call_send(event_2, "删除成功", True)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("_clear_db")
|
||||||
async def test_del_cookie_err(app: App):
|
async def test_del_cookie_err(app: App):
|
||||||
from nonebug_saa import should_send_saa
|
from nonebug_saa import should_send_saa
|
||||||
from nonebot.adapters.onebot.v11.bot import Bot
|
from nonebot.adapters.onebot.v11.bot import Bot
|
||||||
@ -71,62 +133,3 @@ async def test_del_cookie_err(app: App):
|
|||||||
ctx.should_call_send(event_2, "只能删除未关联的 Cookie,请使用“取消关联cookie”命令取消关联", True)
|
ctx.should_call_send(event_2, "只能删除未关联的 Cookie,请使用“取消关联cookie”命令取消关联", True)
|
||||||
ctx.should_call_send(event_2, "删除错误", True)
|
ctx.should_call_send(event_2, "删除错误", True)
|
||||||
ctx.should_rejected()
|
ctx.should_rejected()
|
||||||
|
|
||||||
|
|
||||||
async def test_del_cookie(app: App):
|
|
||||||
from nonebug_saa import should_send_saa
|
|
||||||
from nonebot.adapters.onebot.v11.bot import Bot
|
|
||||||
from nonebot.adapters.onebot.v11.message import Message
|
|
||||||
from nonebot_plugin_saa import TargetQQGroup, MessageFactory
|
|
||||||
|
|
||||||
from nonebot_bison.config import config
|
|
||||||
from nonebot_bison.config.db_model import Cookie
|
|
||||||
from nonebot_bison.types import Target as T_Target
|
|
||||||
from nonebot_bison.sub_manager import del_cookie_matcher
|
|
||||||
|
|
||||||
async with app.test_matcher(del_cookie_matcher) as ctx:
|
|
||||||
bot = ctx.create_bot(base=Bot)
|
|
||||||
event = fake_private_message_event(
|
|
||||||
message=Message("删除cookie"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id
|
|
||||||
)
|
|
||||||
ctx.receive_event(bot, event)
|
|
||||||
ctx.should_pass_rule()
|
|
||||||
ctx.should_pass_permission()
|
|
||||||
ctx.should_call_send(event, "暂无已添加的 Cookie\n请使用“添加cookie”命令添加", True)
|
|
||||||
|
|
||||||
async with app.test_matcher(del_cookie_matcher) as ctx:
|
|
||||||
bot = ctx.create_bot(base=Bot)
|
|
||||||
target = T_Target("weibo_id")
|
|
||||||
platform_name = "weibo"
|
|
||||||
await config.add_subscribe(
|
|
||||||
TargetQQGroup(group_id=123),
|
|
||||||
target=target,
|
|
||||||
target_name="weibo_name",
|
|
||||||
platform_name=platform_name,
|
|
||||||
cats=[],
|
|
||||||
tags=[],
|
|
||||||
)
|
|
||||||
await config.add_cookie(Cookie(content=json.dumps({"cookie": "test"}), site_name="weibo.com"))
|
|
||||||
|
|
||||||
event_1 = fake_private_message_event(
|
|
||||||
message=Message("删除cookie"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id
|
|
||||||
)
|
|
||||||
ctx.receive_event(bot, event_1)
|
|
||||||
ctx.should_pass_rule()
|
|
||||||
ctx.should_pass_permission()
|
|
||||||
should_send_saa(
|
|
||||||
ctx,
|
|
||||||
MessageFactory(
|
|
||||||
"已添加的 Cookie 为:\n1 weibo.com unnamed cookie"
|
|
||||||
" 0个关联\n请输入要删除的 Cookie 的序号\n输入'取消'中止"
|
|
||||||
),
|
|
||||||
bot,
|
|
||||||
event=event_1,
|
|
||||||
)
|
|
||||||
event_2 = fake_private_message_event(
|
|
||||||
message=Message("1"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id
|
|
||||||
)
|
|
||||||
ctx.receive_event(bot, event_2)
|
|
||||||
ctx.should_pass_rule()
|
|
||||||
ctx.should_pass_permission()
|
|
||||||
ctx.should_call_send(event_2, "删除成功", True)
|
|
||||||
|
@ -5,6 +5,7 @@ from nonebot.compat import model_dump
|
|||||||
from .utils import get_json
|
from .utils import get_json
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("_clear_db")
|
||||||
async def test_subs_export(app: App, init_scheduler):
|
async def test_subs_export(app: App, init_scheduler):
|
||||||
from nonebot_plugin_saa import TargetQQGroup
|
from nonebot_plugin_saa import TargetQQGroup
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user