yumi-flutter/test/room_rocket_message_test.dart
2026-05-21 18:55:14 +08:00

74 lines
2.3 KiB
Dart

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');
});
}