yumi-flutter/test/room_rocket_status_transition_test.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',
);