import 'package:flutter_test/flutter_test.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:yumi/services/audio/rtc_manager.dart'; import 'package:yumi/shared/business_logic/models/res/login_res.dart'; import 'package:yumi/shared/business_logic/models/res/mic_res.dart'; import 'package:yumi/shared/data_sources/sources/local/user_manager.dart'; void main() { test('self go-up keeps optimistic mic seat over stale mic list data', () { SharedPreferences.setMockInitialValues({}); AccountStorage().setCurrentUser( SocialChatLoginRes( userProfile: SocialChatUserProfile(id: 'user-1', userNickname: 'Me'), ), ); final rtcProvider = RealTimeCommunicationManager() ..roomWheatMap = { 3: MicRes( micIndex: 3, user: SocialChatUserProfile(id: 'user-1', userNickname: 'Me'), ), }; rtcProvider.debugStartSelfMicGoUpGuard(3); rtcProvider.debugApplyMicListSnapshot([ MicRes(micIndex: 3), ], notifyIfUnchanged: false); expect(rtcProvider.roomWheatMap[3]?.user?.id, 'user-1'); expect(rtcProvider.isOnMai(), isTrue); }); test('self mic lookup matches account when mic user id differs', () { SharedPreferences.setMockInitialValues({}); AccountStorage().setCurrentUser( SocialChatLoginRes( userProfile: SocialChatUserProfile( id: 'local-user-id', account: 'account-1', userNickname: 'Me', ), ), ); final rtcProvider = RealTimeCommunicationManager() ..roomWheatMap = { 2: MicRes( micIndex: 2, user: SocialChatUserProfile( id: 'mic-user-id', account: 'account-1', userNickname: 'Me', ), ), }; expect(rtcProvider.isOnMai(), isTrue); expect(rtcProvider.isOnMaiInIndex(2), isTrue); expect(rtcProvider.userOnMaiInIndex('local-user-id'), 2); }); }