import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences_platform_interface/in_memory_shared_preferences_async.dart'; import 'package:shared_preferences_platform_interface/shared_preferences_async_platform_interface.dart'; import 'package:fruitshorts/core/config/locale_controller.dart'; import 'package:fruitshorts/core/data/models/drama.dart'; import 'package:fruitshorts/core/data/repositories/watch_history_repository.dart'; import 'package:fruitshorts/l10n/app_localizations.dart'; import 'package:fruitshorts/pages/mine/mine_logic.dart'; const _drama = Drama( id: 'drama-1', title: 'The Signal', synopsis: 'synopsis', posterUrl: '/files/1.jpg', ); void main() { setUp(() { SharedPreferencesAsyncPlatform.instance = InMemorySharedPreferencesAsync.empty(); }); testWidgets('should_not_show_server_address_in_settings_sheet', ( tester, ) async { await _pumpSettings(tester); expect(find.byKey(const Key('server-endpoint-setting')), findsNothing); expect(find.text('Server address'), findsNothing); }); testWidgets('should_keep_all_three_languages_in_settings_sheet', ( tester, ) async { await _pumpSettings(tester); expect(find.text('English'), findsOneWidget); expect(find.text('简体中文'), findsOneWidget); expect(find.text('Bahasa Indonesia'), findsOneWidget); }); } Future _pumpSettings(WidgetTester tester) async { final logic = MineLogic( history: InMemoryWatchHistoryRepository(), drama: _drama, initialSection: 0, ); addTearDown(logic.dispose); await tester.pumpWidget( ChangeNotifierProvider( create: (_) => LocaleController(), child: MaterialApp( locale: const Locale('en'), localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: AppLocalizations.supportedLocales, home: Builder( builder: (context) => Scaffold( body: TextButton( key: const Key('open-settings'), onPressed: () => logic.showLanguage(context), child: const Text('Open settings'), ), ), ), ), ), ); await tester.tap(find.byKey(const Key('open-settings'))); await tester.pumpAndSettle(); }