74 lines
2.3 KiB
Dart
74 lines
2.3 KiB
Dart
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<void> _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();
|
|
}
|