import assert from 'node:assert/strict'; import test from 'node:test'; import { findSemesterForDate, scheduleRangeForSemester, semesterOptionLabel } from '../admin/js/views/schedule-view.js'; const autumnSemester = { id: 11, academicYearTitle: '2025/2026', semesterType: 'autumn', startDate: '2025-09-01', endDate: '2026-01-31' }; const springSemester = { id: 12, academicYearTitle: '2025/2026', semesterType: 'spring', startDate: '2026-02-09', endDate: '2026-06-30' }; test('семестр определяется по выбранной дате включительно с границами', () => { const semesters = [autumnSemester, springSemester]; assert.equal(findSemesterForDate(semesters, '2025-09-01')?.id, 11); assert.equal(findSemesterForDate(semesters, '2026-06-30')?.id, 12); assert.equal(findSemesterForDate(semesters, '2026-07-01'), null); }); test('при выборе другого семестра диапазон начинается с его первой учебной недели', () => { assert.deepEqual(scheduleRangeForSemester('2026-07-21', autumnSemester), { startDate: '2025-09-01', endDate: '2025-09-14' }); }); test('внутри выбранного семестра сохраняется текущая двухнедельная точка просмотра', () => { assert.deepEqual(scheduleRangeForSemester('2026-03-18', springSemester), { startDate: '2026-03-16', endDate: '2026-03-29' }); }); test('название семестра содержит учебный год, тип и границы', () => { assert.equal( semesterOptionLabel(springSemester), '2025/2026 · Весенний семестр · 09.02.2026 — 30.06.2026' ); });