81 lines
2.3 KiB
Dart
81 lines
2.3 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:yumi/services/audio/rtc_manager.dart';
|
|
import 'package:yumi/shared/business_logic/models/res/join_room_res.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/shared/data_sources/models/message/room_rocket_launch_broadcast_message.dart';
|
|
|
|
void main() {
|
|
test('advances a reset launched level to the next rocket level', () {
|
|
final rtcProvider = _rtcProviderAtLevel(1);
|
|
|
|
rtcProvider.advanceRoomRocketStatusAfterLaunch(_levelOneLaunch);
|
|
|
|
expect(rtcProvider.roomRocketStatus?.currentLevel, 2);
|
|
expect(rtcProvider.roomRocketStatus?.currentEnergy, 0);
|
|
});
|
|
|
|
test('does not advance again for a duplicate launch event', () {
|
|
final rtcProvider = _rtcProviderAtLevel(1);
|
|
|
|
rtcProvider.advanceRoomRocketStatusAfterLaunch(_levelOneLaunch);
|
|
rtcProvider.advanceRoomRocketStatusAfterLaunch(_levelOneLaunch);
|
|
|
|
expect(rtcProvider.roomRocketStatus?.currentLevel, 2);
|
|
});
|
|
}
|
|
|
|
RealTimeCommunicationManager _rtcProviderAtLevel(int level) {
|
|
return RealTimeCommunicationManager()
|
|
..currenRoom = JoinRoomRes(
|
|
roomProfile: RoomProfile(roomProfile: RoomProfile2(id: 'room-1')),
|
|
)
|
|
..roomRocketStatus = SCRoomRocketStatusRes(
|
|
roomId: 'room-1',
|
|
currentLevel: level,
|
|
level: level,
|
|
currentEnergy: 0,
|
|
displayPercent: 0,
|
|
configured: true,
|
|
enabled: true,
|
|
levels: [_level(1), _level(2), _level(3)],
|
|
);
|
|
}
|
|
|
|
SCRoomRocketLevelRes _level(int level) {
|
|
return SCRoomRocketLevelRes(
|
|
id: '$level',
|
|
level: level,
|
|
needEnergy: level * 100,
|
|
rocketIconUrl: 'icon-$level',
|
|
rocketPreviewUrl: '',
|
|
rocketAnimationUrl: '',
|
|
progressBarUrl: '',
|
|
shakeThresholdPercent: 95,
|
|
enabled: true,
|
|
sort: level,
|
|
);
|
|
}
|
|
|
|
const _levelOneLaunch = RoomRocketLaunchBroadcastMessage(
|
|
roomId: 'room-1',
|
|
roomAccount: '',
|
|
roomName: '',
|
|
roomCoverUrl: '',
|
|
roundNo: 1,
|
|
level: 1,
|
|
rocketIconUrl: 'icon-1',
|
|
rocketAnimationUrl: '',
|
|
durationSeconds: 10,
|
|
triggerUser: RoomRocketLaunchTriggerUser(
|
|
userId: '',
|
|
nickname: '',
|
|
avatar: '',
|
|
account: '',
|
|
countryCode: '',
|
|
countryName: '',
|
|
),
|
|
triggerUserId: '',
|
|
launchNo: 'launch-1',
|
|
);
|