Files
TPSchedule/mobile/test/widgets/logout_recovery_test.dart
T

44 lines
1.8 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:timezone/data/latest.dart' as tzdata;
import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart';
import 'package:hepan_everyday/app/hepan_app.dart';
import 'package:hepan_everyday/features/school/school_session.dart';
import '../support/fake_school_web.dart';
import 'navigation_test.dart' show uiController;
void main() {
setUpAll(tzdata.initializeTimeZones);
testWidgets(
'logout failure is visible and user can retry clearing school login',
(tester) async {
final platform = FakeSchoolPlatform();
WebViewPlatform.instance = platform;
final school = SchoolSession();
await school.open();
final c = uiController();
await c.initialize();
await tester.pumpWidget(HepanApp(controller: c, school: school));
await tester.pumpAndSettle();
await tester.tap(find.bySemanticsLabel('个人设置'));
await tester.pumpAndSettle();
platform.cookies.fail = true;
await tester.tap(find.text('退出学校登录'));
await tester.pumpAndSettle();
await tester.tap(find.text('保留课表和考试'));
await tester.pumpAndSettle();
expect(find.textContaining('学校退出未完成'), findsOneWidget);
expect(find.text('重试退出学校登录'), findsOneWidget);
platform.cookies.fail = false;
await tester.tap(find.text('重试退出学校登录'));
await tester.pumpAndSettle();
await tester.tap(find.text('保留课表和考试'));
await tester.pumpAndSettle();
expect(find.text('重试退出学校登录'), findsNothing);
expect(find.textContaining('学校退出未完成'), findsNothing);
school.dispose();
c.dispose();
},
);
}