test_s1_sender.py
2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python3
"""test_s1_sender.py — GREEN: verify get_messages() returns sender_username for regular messages."""
import sys, os
sys.path.insert(0, "/data/data/com.termux/files/home/wechat-viewer")
from wechat_db import get_messages, query
PASSED = 0
FAILED = 0
def check(cond, msg):
global PASSED, FAILED
if cond:
PASSED += 1
print(f" ✓ {msg}")
else:
FAILED += 1
print(f" ✗ {msg}")
# Find a group chat with messages
groups = query("SELECT talker FROM message WHERE talker LIKE '%@chatroom' LIMIT 1")
if not groups:
print("SKIP: No group chats found")
sys.exit(0)
group_talker = groups[0]['talker']
print(f"Testing group: {group_talker}")
msgs = get_messages(group_talker, limit=10)
print(f"Got {len(msgs)} messages")
regular_count = 0
for m in msgs:
has_sender = 'sender_username' in m
check(has_sender, f"Message has sender_username field")
if has_sender:
sender = m['sender_username']
# System messages (recall, etc.) may have None sender — that's OK
# But at least one regular message should have a non-None sender
if sender is not None:
regular_count += 1
if regular_count == 1:
check('@chatroom' not in sender, f"sender_username not chatroom ID: {sender}")
check(len(sender) > 0, f"sender_username non-empty: {sender}")
check(regular_count > 0, f"At least one message has non-None sender_username (found {regular_count})")
# Also test personal chat
personals = query("SELECT talker FROM message WHERE talker NOT LIKE '%@chatroom' AND talker NOT LIKE 'gh_%' LIMIT 1")
if personals:
p_talker = personals[0]['talker']
print(f"\nTesting personal: {p_talker}")
p_msgs = get_messages(p_talker, limit=3)
for m in p_msgs:
if 'sender_username' in m:
if m.get('isSend') == 0 and m['sender_username'] is not None:
check(m['sender_username'] == p_talker, f"Personal chat sender matches talker ({m['sender_username']} == {p_talker})")
break
print(f"\n{'='*40}")
print(f"Results: {PASSED} passed, {FAILED} failed")
sys.exit(0 if FAILED == 0 else 1)