ابنِ بوت دعم بالذكاء الاصطناعي لمتجرك الإلكتروني في الجزائر

بوت دعم لمتجرك بلغة Python: الكود المصدري

الملفات: 2988,4 KiBتنزيل ZIP

tests/test_tools.py

2,0 KiBالنص الخامتنزيل
Python
1import json23from store_assistant.tools import TOOL_SCHEMAS, ToolContext, ToolExecutor456def run(store, name, args, ctx=None):7    ctx = ctx or ToolContext(chat_id=42, username="tester")8    raw = args if isinstance(args, str) else json.dumps(args)9    return json.loads(ToolExecutor(store).run(name, raw, ctx))101112def test_every_schema_has_a_handler(store) -> None:13    executor = ToolExecutor(store)14    for schema in TOOL_SCHEMAS:15        name = schema["function"]["name"]16        result = json.loads(executor.run(name, "{}", ToolContext(chat_id=1)))17        assert "unknown tool" not in result.get("error", "")181920def test_unknown_tool(store) -> None:21    assert "unknown tool" in run(store, "drop_tables", {})["error"]222324def test_invalid_json_arguments(store) -> None:25    assert "invalid arguments" in run(store, "get_delivery_fee", "{not json")["error"]26    assert "invalid arguments" in run(store, "get_delivery_fee", "[1, 2]")["error"]272829def test_order_not_found_does_not_leak_data(store) -> None:30    result = run(store, "get_order_status", {"order_id": "NS-10241", "phone_last4": "1111"})31    assert result["found"] is False32    assert "order" not in result333435def test_order_found(store) -> None:36    result = run(store, "get_order_status", {"order_id": "NS-10241", "phone_last4": "4821"})37    assert result["found"] is True38    assert result["order"]["tracking_code"] == "TRK-77310452"394041def test_delivery_fee_not_covered_lists_wilayas(store) -> None:42    result = run(store, "get_delivery_fee", {"wilaya": "Illizi"})43    assert result["covered"] is False44    assert "Oran" in result["covered_wilayas"]454647def test_human_agent_creates_ticket(store) -> None:48    ctx = ToolContext(chat_id=7, username="karim")49    result = run(store, "request_human_agent", {"reason": "wants a refund"}, ctx)50    assert ctx.tickets == [result["ticket_id"]]515253def test_arabic_text_is_not_escaped(store) -> None:54    raw = ToolExecutor(store).run("get_delivery_fee", json.dumps({"wilaya": "وهران"}), ToolContext(chat_id=1))55    assert "\\u" not in raw