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', );