feat: release undergraduate integration 0.7.0

This commit is contained in:
Codex
2026-10-15 01:14:06 +08:00
parent b28f333720
commit 674df1ceb3
22 changed files with 173 additions and 63 deletions
@@ -68,8 +68,7 @@ void main() {
);
test('only recognized explicit empty exam tables are empty success', () {
final empty =
'<form id="stdExamTableForm"><input name="semester.id" value="503"><input name="examType.id" value="1"></form><table><tr>' +
[
'<form id="stdExamTableForm"><input name="semester.id" value="503"><input name="examType.id" value="1"></form><table><tr>${[
'课程序号',
'课程名称',
'考试日期',
@@ -79,8 +78,7 @@ void main() {
'考试情况',
'考试类型',
'其它说明',
].map((s) => '<td>$s</td>').join() +
'</tr><tr><td colspan="9">暂无考试安排</td></tr></table>';
].map((s) => '<td>$s</td>').join()}</tr><tr><td colspan="9">暂无考试安排</td></tr></table>';
expect(UndergraduateExamAdapter.extract(empty).records, isEmpty);
expect(
() => UndergraduateExamAdapter.extract(empty.replaceAll('暂无考试安排', '')),
@@ -92,7 +90,7 @@ void main() {
);
});
final original = Platform.environment['UESTC_UNDERGRADUATE_EXAM_FIXTURE'];
if (original != null)
if (original != null) {
test('actual supplied exam export belongs to 503', () {
final result = UndergraduateExamAdapter.extract(
File(original).readAsStringSync(),
@@ -100,4 +98,5 @@ void main() {
expect(result.records, hasLength(4));
expect(result.termId, '503');
});
}
}
@@ -31,6 +31,26 @@ void main() {
session = UndergraduateSession();
});
tearDown(() => session.dispose());
test(
'activating a loading browser never probes the previous blank document',
() async {
await session.openTimetable();
var probes = 0;
platform.web.javascript = (_) async {
probes++;
return underEvidence('about:blank', authenticated: false);
};
session.setReadingActive(true);
await flushSchoolEvents();
expect(probes, 0);
platform.web.javascript = (_) async => underEvidence(platform.web.url!);
platform.delegate.started(platform.web.url!);
platform.delegate.finished(platform.web.url!);
await flushSchoolEvents();
expect(session.busy, isFalse);
expect(session.message, UndergraduateSession.manualMessage);
},
);
test(
'manual session is lazy and never captures until the student taps import',
() async {
@@ -124,7 +124,7 @@ void main() {
});
final original =
Platform.environment['UESTC_UNDERGRADUATE_TIMETABLE_FIXTURE'];
if (original != null)
if (original != null) {
test(
'actual supplied undergraduate HTML has complete normalized arrangements',
() {
@@ -141,4 +141,5 @@ void main() {
);
},
);
}
}