import 'package:flutter_test/flutter_test.dart'; import 'package:yumi/app/constants/sc_room_msg_type.dart'; import 'package:yumi/ui_kit/widgets/room/room_msg_item.dart'; void main() { 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'); }); }