#!/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)