import typing

import pytest
from nonebug.app import App

if typing.TYPE_CHECKING:
    import sys

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


@pytest.fixture
def config(app: App):
    from nonebot_bison import config

    config.start_up()
    return config.Config()


def test_create_and_get(config: "Config", app: App):
    from nonebot_bison import types
    from nonebot_bison.types import Target

    config.add_subscribe(
        user="123",
        user_type="group",
        target="weibo_id",
        target_name="weibo_name",
        target_type="weibo",
        cats=[],
        tags=[],
    )
    confs = config.list_subscribe("123", "group")
    assert len(confs) == 1
    assert config.target_user_cache["weibo"][Target("weibo_id")] == [
        types.User("123", "group")
    ]
    assert confs[0]["cats"] == []
    config.update_subscribe(
        user="123",
        user_type="group",
        target="weibo_id",
        target_name="weibo_name",
        target_type="weibo",
        cats=["1"],
        tags=[],
    )
    confs = config.list_subscribe("123", "group")
    assert len(confs) == 1
    assert confs[0]["cats"] == ["1"]