import pytest
import typing
import respx
from httpx import Response
import feedparser

if typing.TYPE_CHECKING:
    import sys
    sys.path.append('./src/plugins')
    import nonebot_hk_reporter

from .utils import get_json, get_file

@pytest.fixture
def monster_siren(plugin_module: 'nonebot_hk_reporter'):
    return plugin_module.platform.platform_manager['monster-siren']

@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(monster_siren, dummy_user_subinfo, monster_siren_list_0, monster_siren_list_1):
    ak_list_router = respx.get("https://monster-siren.hypergryph.com/api/news")
    ak_list_router.mock(return_value=Response(200, json=monster_siren_list_0))
    target = ''
    res = await monster_siren.fetch_new_post(target, [dummy_user_subinfo])
    assert(ak_list_router.called)
    assert(len(res) == 0)
    mock_data = monster_siren_list_1
    ak_list_router.mock(return_value=Response(200, json=mock_data))
    res3 = await monster_siren.fetch_new_post(target, [dummy_user_subinfo])
    assert(len(res3[0][1]) == 1)
    post = res3[0][1][0]
    assert(post.target_type == 'monster-siren')
    assert(post.text == '#D.D.D.PHOTO')
    assert(post.url == 'https://monster-siren.hypergryph.com/info/241303')
    assert(post.target_name == '塞壬唱片新闻')
    assert(len(post.pics) == 0)