109 lines
3.1 KiB
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,
|
|
);
|
|
}
|