Add course schedules for ISF and ITZS programs for 2026 and 2024 sessions
- Created new snapshot files for ISF credits and daily schedules for the 26-АРХ and 26-ПГС programs. - Added summer 2026 and winter 2024 exam schedules for the 23-ИТзс program, detailing lectures, labs, and consultations.
This commit is contained in:
84
test/diagnostics.test.js
Normal file
84
test/diagnostics.test.js
Normal file
@@ -0,0 +1,84 @@
|
||||
import { test } from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
import { diagnose, catalogDiagnostics } from "../server/diagnostics.js";
|
||||
|
||||
const lesson = (raw, fields = {}) => ({
|
||||
day: 1,
|
||||
start: "09:00",
|
||||
end: "10:20",
|
||||
subject: raw,
|
||||
condition: "",
|
||||
weekRanges: null,
|
||||
dates: [],
|
||||
date: null,
|
||||
groups: ["25-АРХ"],
|
||||
subgroups: [],
|
||||
raw,
|
||||
...fields,
|
||||
});
|
||||
const codes = (...lessons) =>
|
||||
diagnose({ academicYear: "2026", groups: ["25-АРХ"], lessons }).map((p) => p.code);
|
||||
|
||||
test("Диагностика: обычные занятия без замечаний", () => {
|
||||
assert.deepEqual(
|
||||
codes(
|
||||
lesson("Химия (л.) Иванов И.И. 101", { subject: "Химия" }),
|
||||
lesson("1-8н. Физика", { subject: "Физика", condition: "1-8н.", weekRanges: [[1, 8]] }),
|
||||
lesson("Единый день 07.09;14.09", { subject: "Единый день", dates: ["2026-09-07", "2026-09-14"] }),
|
||||
),
|
||||
[],
|
||||
);
|
||||
});
|
||||
|
||||
test("Диагностика: пометка недель прочитана не целиком", () => {
|
||||
assert.deepEqual(
|
||||
codes(lesson("1-4н.;6-12н. Политэкономия", { subject: "6-12н. Политэкономия", condition: "1-4н.", weekRanges: [[1, 4]] })),
|
||||
["weeks_partly"],
|
||||
);
|
||||
});
|
||||
|
||||
test("Диагностика: дата и время в начале ячейки", () => {
|
||||
assert.deepEqual(codes(lesson("24.11. Компьютерная графика")), ["date_in_subject"]);
|
||||
assert.deepEqual(codes(lesson("3.12 Микроконтроллеры")), ["date_in_subject"]);
|
||||
assert.deepEqual(codes(lesson("9.00 Информационный час")), ["time_in_subject"]);
|
||||
assert.deepEqual(codes(lesson("11:10-11:30 – информационный час")), ["time_in_subject"]);
|
||||
});
|
||||
|
||||
test("Диагностика: опечатка в дате, нечитаемые недели, даты не того дня", () => {
|
||||
assert.deepEqual(
|
||||
codes(lesson("19,11, 03.12, 17.12 Микроконтроллеры", { subject: "Микроконтроллеры", condition: "19,11,", weekRanges: null })),
|
||||
["weeks_like_date"],
|
||||
);
|
||||
assert.deepEqual(
|
||||
codes(lesson("2,6-12-16н Управление проектами", { subject: "Управление проектами", condition: "2,6-12-16н" })),
|
||||
["weeks_unreadable"],
|
||||
);
|
||||
// 2026-10-13 is a Tuesday, the row is Monday's.
|
||||
assert.deepEqual(codes(lesson("13.10 Информационный час", { subject: "Информационный час", date: "2026-10-13" })), [
|
||||
"date_weekday",
|
||||
]);
|
||||
assert.deepEqual(codes(lesson("15 октября Экскурсия", { subject: "Экскурсия" })), ["dates_unread"]);
|
||||
});
|
||||
|
||||
test("Диагностика каталога: фильтры по группе и коду", () => {
|
||||
const doc = (id, groups, lessons) => ({
|
||||
id,
|
||||
file: { name: `${id}.docx`, faculty: "ИСФ" },
|
||||
schedule: { academicYear: "2026", groups, lessons, source: {} },
|
||||
});
|
||||
const idx = {
|
||||
builtAt: "2026-10-19T00:00:00Z",
|
||||
failed: [],
|
||||
docs: [
|
||||
doc("a", ["25-АРХ"], [lesson("9.00 Информационный час")]),
|
||||
doc("b", ["24-ДС"], [lesson("3.12 Химия", { groups: ["24-ДС"] })]),
|
||||
doc("c", ["23-ИТ"], [lesson("Химия", { groups: ["23-ИТ"] })]),
|
||||
],
|
||||
};
|
||||
const all = catalogDiagnostics(idx);
|
||||
assert.equal(all.documents, 3);
|
||||
assert.equal(all.problems, 2);
|
||||
assert.deepEqual(all.counts, { time_in_subject: 1, date_in_subject: 1 });
|
||||
assert.deepEqual(catalogDiagnostics(idx, { group: "24-дс" }).items.map((i) => i.doc.id), ["b"]);
|
||||
assert.deepEqual(catalogDiagnostics(idx, { code: "time_in_subject" }).items.map((i) => i.doc.id), ["a"]);
|
||||
});
|
||||
Reference in New Issue
Block a user