yumi-flutter/test/room_rocket_reward_dialog_loader_test.dart
2026-05-16 00:02:09 +08:00

56 lines
1.7 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:yumi/shared/business_logic/models/res/sc_room_rocket_api_res.dart';
import 'package:yumi/ui_kit/widgets/room/rocket/room_rocket_reward_dialog_loader.dart';
void main() {
group('room rocket reward dialog loader', () {
test('deduplicates reward records by id', () {
final records = debugUniqueRoomRocketRewardRecords([
_rewardRecord(id: 'record-1', rewardAmount: 5000),
_rewardRecord(id: 'record-1', rewardAmount: 5200),
_rewardRecord(id: 'record-2', rewardAmount: 5200),
]);
expect(records, hasLength(2));
expect(records.map((item) => item.id), ['record-1', 'record-2']);
expect(records.first.rewardAmount, 5000);
});
test('deduplicates id-less reward records by reward identity', () {
final records = debugUniqueRoomRocketRewardRecords([
_rewardRecord(id: '', rewardAmount: 5000),
_rewardRecord(id: '', rewardAmount: 5000),
_rewardRecord(id: '', rewardAmount: 5200),
]);
expect(records, hasLength(2));
expect(records.map((item) => item.rewardAmount), [5000, 5200]);
});
});
}
SCRoomRocketRewardRecordRes _rewardRecord({
required String id,
required int rewardAmount,
}) {
return SCRoomRocketRewardRecordRes.fromJson({
'id': id,
'launchNo': 'launch-1',
'roomId': 'room-1',
'dayKey': '2026-05-15',
'roundNo': 1,
'level': 2,
'userId': 'user-1',
'userNickname': 'User 1',
'rewardScene': 'TOP1',
'rewardType': 'GOLD',
'rewardItemId': 'gold',
'rewardName': 'Yumi',
'rewardCover': '',
'rewardAmount': rewardAmount,
'expireDays': 0,
'grantStatus': 'SUCCESS',
'popupStatus': 'UNREAD',
});
}