import 'package:flutter_test/flutter_test.dart'; import 'package:yumi/app/constants/sc_room_msg_type.dart'; import 'package:yumi/services/audio/rtm_manager.dart'; import 'package:yumi/ui_kit/widgets/room/room_msg_item.dart'; void main() { test('rocket reward user messages do not enter public room lists', () { final manager = RealTimeMessagingManager(); var allCount = 0; var chatCount = 0; var giftCount = 0; manager.msgAllListener = (_) => allCount += 1; manager.msgChatListener = (_) => chatCount += 1; manager.msgGiftListener = (_) => giftCount += 1; manager.addMsg( Msg.fromJson({ 'type': SCRoomMsgType.voiceRoomRocketRewardUser, 'data': { 'roomId': '9001', 'userId': '1001', 'rewardType': 'GOLD', 'rewardCover': 'https://cdn.example.com/reward.png', }, }), ); expect(manager.roomAllMsgList, isEmpty); expect(manager.roomChatMsgList, isEmpty); expect(manager.roomGiftMsgList, isEmpty); expect(allCount, 0); expect(chatCount, 0); expect(giftCount, 0); }); test('hydrates rocket reward user from nested im payload', () { final msg = Msg.fromJson({ 'type': SCRoomMsgType.voiceRoomRocketRewardUser, 'data': { 'roomId': '9001', 'userId': '1001', 'userNickname': 'Winner', 'account': '223456', 'userAvatar': 'https://cdn.example.com/avatar.png', 'rewardType': 'GOLD', 'rewardCover': 'https://cdn.example.com/reward.png', 'rocketIconUrl': 'https://cdn.example.com/rocket.png', }, }); expect(msg.type, SCRoomMsgType.voiceRoomRocketRewardUser); expect(msg.groupId, '9001'); expect(msg.user?.id, '1001'); expect(msg.user?.userNickname, 'Winner'); expect(msg.user?.account, '223456'); expect(msg.user?.userAvatar, 'https://cdn.example.com/avatar.png'); expect(msg.role, 'GOLD'); expect(msg.msg, 'https://cdn.example.com/reward.png'); expect(msg.rocketIconUrl, 'https://cdn.example.com/rocket.png'); }); test('rocket reward user nickname falls back to account', () { final msg = Msg.fromJson({ 'type': SCRoomMsgType.voiceRoomRocketRewardUser, 'userId': '1002', 'account': '334455', 'rewardType': 'BADGE', }); expect(msg.user?.userNickname, '334455'); expect(msg.user?.id, '1002'); }); }