teach/test/assignment-composer.test.js
Ramon 05f3dbe56c
All checks were successful
dev - build & deploy naar test / build-and-deploy (push) Successful in 55s
feat: simplify assignment sequence sharing
2026-07-24 23:08:44 +02:00

34 lines
1.5 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { readFile } from 'node:fs/promises';
test('leerkracht bouwt visueel een reeks en geeft die in één actie aan meerdere doelgroepen', async () => {
const [cast, admin, css, core] = await Promise.all([
readFile('public/js/cast.js', 'utf8'),
readFile('public/js/admin.js', 'utf8'),
readFile('public/css/teach.css', 'utf8'),
readFile('public/js/core.js', 'utf8'),
]);
assert.match(cast, /castShareKind\s*=\s*"path"/);
assert.match(cast, /castSelectedTargets\s*=\s*new Set/);
assert.match(cast, /cast-widget-card/);
assert.match(cast, /castPathSteps\.push/);
assert.match(cast, /slice\(0,12-castPathSteps\.length\)/);
assert.match(cast, /castPupilCoveredByClass/);
assert.match(cast, /Promise\.allSettled\(targets\.map/);
assert.match(cast, /castSendSelected/);
assert.match(admin, /assignment-composer-cta[\s\S]*btnCast/);
assert.match(css, /cast-widget-grid[\s\S]*cast-path-step[\s\S]*cast-target-grid/);
assert.match(css, /cast-sendbar\{position:sticky/);
assert.match(css, /@media \(max-width:700px\)[\s\S]*cast-composer-sheet/);
for (const key of [
'castIntro', 'castKindPath', 'castLiveStateHint', 'castWidgetLibrary', 'castSequenceOrder',
'castAudienceTitle', 'castSelectVisible', 'castSend', 'castSent',
'castNeedPath', 'castNeedTarget', 'castOpenComposer',
]) {
assert.equal(core.split(`${key}:`).length - 1, 2, `${key} moet tweetalig zijn`);
}
});