import typing

import pytest
import nonebot
from nonebug.fixture import nonebug_init, nonebug_clear

if typing.TYPE_CHECKING:
    import sys

    sys.path.append("./src/plugins")
    import nonebot_bison


@pytest.fixture  # (scope="module")
def plugin_module(tmpdir):
    nonebot.init(bison_config_path=str(tmpdir))
    nonebot.load_plugins("src/plugins")
    plugins = nonebot.get_loaded_plugins()
    plugin = list(filter(lambda x: x.name == "nonebot_bison", plugins))[0]
    return plugin.module


@pytest.fixture
def dummy_user_subinfo(plugin_module: "nonebot_bison"):
    user = plugin_module.types.User("123", "group")
    return plugin_module.types.UserSubInfo(
        user=user, category_getter=lambda _: [], tag_getter=lambda _: []
    )


@pytest.fixture
def n_plugin_module(tmpdir):
    nonebot.init(bison_config_path=str(tmpdir))
    nonebot.load_plugins("src/plugins")
    yield None
    nonebug_clear()