yumi-flutter/test/room_rocket_asset_preloader_test.dart

109 lines
3.1 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/shared/business_logic/models/res/sc_room_rocket_status_res.dart';
import 'package:yumi/ui_kit/widgets/room/rocket/room_rocket_asset_preloader.dart';
void main() {
group('room rocket asset preloader', () {
test('collects current and next level disk preload resources', () {
final resources = debugRoomRocketAssetPreloadResources(_status());
expect(resources, [
'https://cdn.example.com/rocket-l2.png',
'https://cdn.example.com/rocket-l2.pag',
'https://cdn.example.com/rocket-l3.png',
'https://cdn.example.com/rocket-l3.pag',
'https://cdn.example.com/reward-top1.png',
'https://cdn.example.com/reward-in-room.png',
]);
});
test('force mode only collects current launch pag and reward covers', () {
final resources = debugRoomRocketAssetPreloadResources(
_status(),
includeNextLevel: false,
onlyCurrentLaunchAssets: true,
);
expect(resources, [
'https://cdn.example.com/rocket-l2.pag',
'https://cdn.example.com/reward-top1.png',
'https://cdn.example.com/reward-in-room.png',
]);
});
test('uses shake threshold to decide force preload', () {
expect(
debugShouldForceRoomRocketAssetPreload(_status(percent: 94)),
false,
);
expect(
debugShouldForceRoomRocketAssetPreload(_status(percent: 95)),
true,
);
});
});
}
SCRoomRocketStatusRes _status({num percent = 95}) {
return SCRoomRocketStatusRes(
roomId: 'room-1',
currentLevel: 2,
displayPercent: percent,
levels: [
_level(
level: 2,
icon: 'https://cdn.example.com/rocket-l2.png',
animation: 'https://cdn.example.com/rocket-l2.pag',
rewardPreview: SCRoomRocketRewardPreviewRes(
top1: [
_reward('https://cdn.example.com/reward-top1.png'),
_reward('https://cdn.example.com/reward-top1.png'),
],
ignite: const <SCRoomRocketRewardRes>[],
inRoom: [_reward('https://cdn.example.com/reward-in-room.png')],
),
),
_level(
level: 3,
icon: 'https://cdn.example.com/rocket-l3.png',
animation: 'https://cdn.example.com/rocket-l3.pag',
),
],
);
}
SCRoomRocketLevelRes _level({
required int level,
required String icon,
required String animation,
SCRoomRocketRewardPreviewRes? rewardPreview,
}) {
return SCRoomRocketLevelRes(
id: level.toString(),
level: level,
needEnergy: level * 100,
rocketIconUrl: icon,
rocketPreviewUrl: '',
rocketAnimationUrl: animation,
progressBarUrl: '',
shakeThresholdPercent: 95,
enabled: true,
sort: level,
rewardPreview: rewardPreview,
);
}
SCRoomRocketRewardRes _reward(String cover) {
return SCRoomRocketRewardRes(
rewardScene: 'TOP1',
rewardType: 'GOLD',
rewardItemId: '',
rewardName: 'Yumi',
rewardCover: cover,
rocketIconUrl: '',
rewardAmount: 1000,
expireDays: 0,
);
}