返回 last30days-skill
test_xai_x.py
根目录 / tests / test_xai_x.py
1 import json
2 import unittest
3
4 from lib.xai_x import parse_x_response
5
6
7 def _wrap_items(items):
8 """Wrap items list in the xAI response envelope."""
9 payload = json.dumps({"items": items})
10 return {
11 "output": [
12 {
13 "type": "message",
14 "content": [{"type": "output_text", "text": payload}],
15 }
16 ]
17 }
18
19
20 class TestXaiXEngagementZero(unittest.TestCase):
21 def test_zero_likes_preserved(self):
22 raw_items = [
23 {
24 "text": "test",
25 "url": "https://x.com/u/status/1",
26 "engagement": {"likes": 0, "reposts": 5},
27 "relevance": 0.8,
28 }
29 ]
30 items = parse_x_response(_wrap_items(raw_items))
31 self.assertEqual(0, items[0]["engagement"]["likes"])
32 self.assertEqual(5, items[0]["engagement"]["reposts"])
33
34 def test_none_engagement_when_missing(self):
35 raw_items = [
36 {
37 "text": "test",
38 "url": "https://x.com/u/status/1",
39 "engagement": {},
40 "relevance": 0.8,
41 }
42 ]
43 items = parse_x_response(_wrap_items(raw_items))
44 self.assertIsNone(items[0]["engagement"]["likes"])
45
46 def test_nonzero_engagement(self):
47 raw_items = [
48 {
49 "text": "test",
50 "url": "https://x.com/u/status/1",
51 "engagement": {"likes": 42, "reposts": 3, "replies": 1, "quotes": 0},
52 "relevance": 0.9,
53 }
54 ]
55 items = parse_x_response(_wrap_items(raw_items))
56 eng = items[0]["engagement"]
57 self.assertEqual(42, eng["likes"])
58 self.assertEqual(3, eng["reposts"])
59 self.assertEqual(1, eng["replies"])
60 self.assertEqual(0, eng["quotes"])
61
62 if __name__ == "__main__":
63 unittest.main()
64
64 lines PYTHON