Preserve courses with pending rooms and report precise graduate import errors
This commit is contained in:
@@ -31,6 +31,59 @@ void main() {
|
||||
platform.delegate.finished(url);
|
||||
}
|
||||
|
||||
testWidgets(
|
||||
'graduate parser rejection keeps its reason instead of becoming a network timeout',
|
||||
(tester) async {
|
||||
addTearDown(SchoolPageDiagnostic.instance.clear);
|
||||
session.connectionState = SchoolConnectionState.connected;
|
||||
await session.openTimetable(term: SchoolTerm(73));
|
||||
platform.web.javascript = (_) async => schoolPageEvidence(
|
||||
topUrl: platform.web.url!,
|
||||
html: fixture().replaceFirst('1-3周', '未知周'),
|
||||
);
|
||||
await tester.runAsync(() async {
|
||||
navigate(SchoolTerm(73).timetableUri.toString());
|
||||
await flushSchoolEvents();
|
||||
});
|
||||
expect(session.message, contains('上课周次'));
|
||||
await tester.pump(const Duration(seconds: 46));
|
||||
expect(session.message, contains('上课周次'));
|
||||
expect(session.message, isNot(contains('查找超时')));
|
||||
expect(session.pendingDraft, isNull);
|
||||
final log = utf8.decode(await DiagnosticLog.instance.export());
|
||||
expect(log, contains('"code":"weeks_invalid"'));
|
||||
expect(log, contains('"column":5'));
|
||||
expect(log, isNot(contains('示例集成电路')));
|
||||
SchoolPageDiagnostic.instance.clear();
|
||||
},
|
||||
);
|
||||
testWidgets('a new graduate page never inherits an old parsing reason', (
|
||||
tester,
|
||||
) async {
|
||||
addTearDown(SchoolPageDiagnostic.instance.clear);
|
||||
session.connectionState = SchoolConnectionState.connected;
|
||||
await session.openTimetable(term: SchoolTerm(73));
|
||||
platform.web.javascript = (_) async => schoolPageEvidence(
|
||||
topUrl: platform.web.url!,
|
||||
html: fixture().replaceFirst('1-3周', '未知周'),
|
||||
);
|
||||
await tester.runAsync(() async {
|
||||
navigate(SchoolTerm(73).timetableUri.toString());
|
||||
await flushSchoolEvents();
|
||||
});
|
||||
expect(session.message, contains('上课周次'));
|
||||
platform.web.javascript = (_) async =>
|
||||
schoolPageEvidence(topUrl: platform.web.url!);
|
||||
await tester.runAsync(() async {
|
||||
navigate(SchoolTerm(72).timetableUri.toString());
|
||||
await flushSchoolEvents();
|
||||
});
|
||||
await tester.pump(const Duration(seconds: 46));
|
||||
expect(session.message, contains('查找超时'));
|
||||
expect(session.message, isNot(contains('上课周次')));
|
||||
SchoolPageDiagnostic.instance.clear();
|
||||
});
|
||||
|
||||
test(
|
||||
'graduate auto read retains HTML after leaving and clears on next query',
|
||||
() async {
|
||||
|
||||
Reference in New Issue
Block a user