30 lines
1.5 KiB
JavaScript
30 lines
1.5 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
|
|
import { buildScheduleOverviewModel } from '../schedule-overview.js';
|
|
|
|
test('обзор расписания выделяет занятия сегодня и ближайшую пару', () => {
|
|
const now = new Date(2026, 7, 19, 10, 15, 0);
|
|
const lessons = [
|
|
{ date: '2026-08-20', startTime: '09:00:00', endTime: '10:30:00', subjectName: 'Завтра' },
|
|
{ date: '2026-08-19', startTime: '08:30:00', endTime: '10:00:00', subjectName: 'Завершилась' },
|
|
{ date: '2026-08-19', startTime: '11:00:00', endTime: '12:30:00', subjectName: 'Ближайшая' }
|
|
];
|
|
|
|
const model = buildScheduleOverviewModel(lessons, now);
|
|
|
|
assert.equal(model.todayIso, '2026-08-19');
|
|
assert.deepEqual(model.todayLessons.map(item => item.subjectName), ['Завершилась', 'Ближайшая']);
|
|
assert.equal(model.nextLesson.subjectName, 'Ближайшая');
|
|
});
|
|
|
|
test('текущее занятие считается ближайшим до времени окончания', () => {
|
|
const now = new Date(2026, 7, 19, 10, 15, 0);
|
|
const model = buildScheduleOverviewModel([
|
|
{ date: '2026-08-19', startTime: '10:00', endTime: '11:30', subjectName: 'Идёт сейчас' },
|
|
{ date: '2026-08-19', startTime: '12:00', endTime: '13:30', subjectName: 'Следующее' }
|
|
], now);
|
|
|
|
assert.equal(model.nextLesson.subjectName, 'Идёт сейчас');
|
|
});
|