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