// Author: fruit.com.cn import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:fruitshorts/l10n/app_localizations.dart'; import 'package:fruitshorts/pages/player/widgets/player_more_sheet.dart'; void main() { testWidgets('should_hide_pip_row_when_platform_unsupported', (tester) async { await _openSheet(tester); expect(find.byKey(const Key('player-more-sheet')), findsOneWidget); expect(find.byKey(const Key('player-more-clear')), findsOneWidget); expect(find.byKey(const Key('player-more-offline')), findsOneWidget); expect(find.byKey(const Key('player-more-pip')), findsNothing); }); testWidgets('should_trigger_pip_and_close_sheet_when_tapped', (tester) async { var pipCalls = 0; await _openSheet(tester, onPip: () => pipCalls++); expect(find.byKey(const Key('player-more-pip')), findsOneWidget); expect( tester.getTopLeft(find.byKey(const Key('player-more-clear'))).dy < tester.getTopLeft(find.byKey(const Key('player-more-pip'))).dy, isTrue, ); expect( tester.getTopLeft(find.byKey(const Key('player-more-pip'))).dy < tester.getTopLeft(find.byKey(const Key('player-more-offline'))).dy, isTrue, ); await tester.tap(find.byKey(const Key('player-more-pip'))); await tester.pumpAndSettle(); expect(pipCalls, 1); expect(find.byKey(const Key('player-more-sheet')), findsNothing); }); } Future _openSheet(WidgetTester tester, {VoidCallback? onPip}) async { await tester.pumpWidget( MaterialApp( supportedLocales: AppLocalizations.supportedLocales, localizationsDelegates: AppLocalizations.localizationsDelegates, home: Scaffold( body: Builder( builder: (context) => Center( child: TextButton( key: const Key('open-more-sheet'), onPressed: () => showModalBottomSheet( context: context, backgroundColor: Colors.transparent, isScrollControlled: true, builder: (_) => PlayerMoreSheet( l10n: AppLocalizations.of(context)!, state: const PlayerMoreState(speed: 1.0, qualities: ['AUTO']), actions: PlayerMoreActions( onSpeedChanged: (_) {}, onClear: () {}, onDownload: () {}, onPip: onPip, ), ), ), child: const Text('open'), ), ), ), ), ), ); await tester.tap(find.byKey(const Key('open-more-sheet'))); await tester.pumpAndSettle(); }