74 lines
2.2 KiB
Dart
74 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:provider/provider.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:yumi/services/audio/rtc_manager.dart';
|
|
import 'package:yumi/services/audio/rtm_manager.dart';
|
|
import 'package:yumi/ui_kit/widgets/room/room_bottom_widget.dart';
|
|
|
|
void main() {
|
|
testWidgets('room bottom shows mic after self goes on mic', (tester) async {
|
|
SharedPreferences.setMockInitialValues({});
|
|
await tester.binding.setSurfaceSize(const Size(1080, 2400));
|
|
addTearDown(() async {
|
|
await tester.binding.setSurfaceSize(null);
|
|
});
|
|
|
|
final rtcProvider = _TestRtcProvider();
|
|
final rtmProvider = RealTimeMessagingManager();
|
|
|
|
await tester.pumpWidget(
|
|
ScreenUtilInit(
|
|
designSize: const Size(375, 812),
|
|
builder:
|
|
(_, __) => MultiProvider(
|
|
providers: [
|
|
ChangeNotifierProvider<RtcProvider>.value(value: rtcProvider),
|
|
ChangeNotifierProvider<RtmProvider>.value(value: rtmProvider),
|
|
],
|
|
child: const MaterialApp(
|
|
home: Scaffold(
|
|
body: Align(
|
|
alignment: Alignment.bottomCenter,
|
|
child: RoomBottomWidget(showGiftComboButton: false),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
expect(_micImageFinder(), findsNothing);
|
|
|
|
rtcProvider.setOnMic(true);
|
|
await tester.pump();
|
|
|
|
expect(rtcProvider.isOnMai(), isTrue);
|
|
expect(_micImageFinder(), findsOneWidget);
|
|
});
|
|
}
|
|
|
|
class _TestRtcProvider extends RealTimeCommunicationManager {
|
|
bool _onMic = false;
|
|
|
|
@override
|
|
bool isOnMai() => _onMic;
|
|
|
|
void setOnMic(bool value) {
|
|
_onMic = value;
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
Finder _micImageFinder() {
|
|
return find.byWidgetPredicate((widget) {
|
|
if (widget is! Image || widget.image is! AssetImage) {
|
|
return false;
|
|
}
|
|
final assetName = (widget.image as AssetImage).assetName;
|
|
return assetName == 'sc_images/room/sc_icon_botton_mic_open.png' ||
|
|
assetName == 'sc_images/room/sc_icon_botton_mic_close.png';
|
|
});
|
|
}
|