44 lines
1.8 KiB
Dart
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();
|
|
},
|
|
);
|
|
}
|