"""企业微信集成测试"""
import pytest
import sys
sys.path.insert(0, '/home/jang/Projects/ai-researcher')

from src.integrations.wechat_work import WeChatWorkClient, WeChatWorkMessageHandler


def test_parse_text_message():
    """测试解析文本消息"""
    client = WeChatWorkClient()
    xml = """<xml>
<ToUserName><![CDATA[corp_id]]></ToUserName>
<FromUserName><![CDATA[user123]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
<MsgId>123456</MsgId>
<AgentID>1000002</AgentID>
</xml>"""

    result = client.parse_message(xml)

    assert result['to_user_name'] == 'corp_id'
    assert result['from_user_name'] == 'user123'
    assert result['msg_type'] == 'text'
    assert result['content'] == '你好'
    assert result['msg_id'] == '123456'


def test_build_reply():
    """测试构建回复"""
    client = WeChatWorkClient()
    xml = client.build_reply('user123', 'corp_id', '回复消息')

    assert 'user123' in xml
    assert 'corp_id' in xml
    assert '回复消息' in xml
    assert '<MsgType><![CDATA[text]]></MsgType>' in xml


@pytest.mark.asyncio
async def test_handle_text_message():
    """测试处理文本消息"""
    client = WeChatWorkClient()
    handler = WeChatWorkMessageHandler(client)

    message = {
        'to_user_name': 'corp_id',
        'from_user_name': 'user123',
        'create_time': '123456789',
        'msg_type': 'text',
        'content': '查询技术部员工',
        'msg_id': '123456',
        'agent_id': '1000002',
    }

    reply = await handler.handle_message(message)

    assert reply is not None
    assert '收到消息' in reply
    assert '查询技术部员工' in reply
