=== Phase 8: Inbox & Rewards Tests === User 1: (ID: 26) User 2: (ID: 27) User 1 starting balance: Gold=0, Wrenches=0 --- Test: Empty inbox --- PASS: Empty inbox - status success --- Test: Personal message --- PASS: Personal msg - user1 sees it PASS: Personal msg - correct subject PASS: Personal msg - type is personal PASS: Personal msg - initially unread PASS: Personal msg - user2 does NOT see it --- Test: Broadcast message --- PASS: Broadcast - type is broadcast PASS: Broadcast - user1 sees it PASS: Broadcast - user2 sees it --- Test: Mark as read --- PASS: Mark read personal - success PASS: Mark read personal - isRead true PASS: Mark read broadcast - success PASS: Mark read broadcast - user1 read PASS: Mark read broadcast - user2 still unread PASS: Mark read - wrong user rejected --- Test: Soft delete --- PASS: Soft delete - success PASS: Soft delete - hidden from inbox PASS: Soft delete - still in DB --- Test: Claim gold reward --- PASS: Gold reward - message has reward PASS: Gold reward - not yet claimed PASS: Claim gold - status success PASS: Claim gold - rewardType is gold PASS: Claim gold - amount is 100 PASS: Claim gold - gold balance increased --- Test: Claim wrenches reward --- PASS: Claim wrenches - status success PASS: Claim wrenches - wrenches balance increased --- Test: Double claim prevention --- PASS: Double claim - returns error PASS: Double claim - already claimed message --- Test: Broadcast reward claim isolation --- PASS: Broadcast claim - user1 success PASS: Broadcast claim - user1 double-claim blocked PASS: Broadcast claim - user2 can still claim --- Test: Unread count --- PASS: Unread count - status success FAIL: Unread count - correct count (Got: 11) --- Test: Message ordering --- PASS: Ordering - newest first --- Test: Pagination --- PASS: Pagination - page 1 has 2 messages PASS: Pagination - hasMore is true PASS: Pagination - page 2 has messages PASS: Pagination - no duplicates --- Test: Edge cases --- PASS: Mark read non-existent - error PASS: Claim non-existent - error --- Cleanup --- Test data cleaned up. ============================= Results: 39 PASSED, 1 FAILED =============================