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, ...wordWidgets] = 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'), readFile('public/js/widgets/letters.js', 'utf8'), readFile('public/js/widgets/flits.js', 'utf8'), readFile('public/js/widgets/hak.js', 'utf8'), readFile('public/js/widgets/ball.js', 'utf8'), ]); assert.match(cast, /castShareKind\s*=\s*"path"/); assert.match(cast, /castSelectedTargets\s*=\s*new Set/); assert.match(cast, /assignmentLibraryWidgets\(\)[\s\S]*REGISTRY\.filter/); assert.match(cast, /castThemeCatalog[\s\S]*languageThemeList[\s\S]*THEMES\[LANG\]/); assert.match(cast, /cast-widget-card/); assert.match(cast, /castPathSteps\.push/); assert.match(cast, /slice\(0,12-castPathSteps\.length\)/); assert.match(cast, /widgetType:step\.widgetType[\s\S]*theme:castThemePayload/); assert.doesNotMatch(cast, /currentBoardWidgets/); 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 widget of wordWidgets) { assert.match(widget, /assignmentWords/); assert.match(widget, /assignmentThemeName/); assert.match(widget, /srcSel\.disabled=true/); } for (const key of [ 'castIntro', 'castLibrarySubtitle', 'castKindPath', 'castLiveStateHint', 'castWidgetLibrary', 'castSequenceOrder', 'castTheme', 'castThemeNone', 'castBuiltInThemes', 'castOwnThemes', 'castIndependentStep', 'castAudienceTitle', 'castSelectVisible', 'castSend', 'castSent', 'castNeedPath', 'castNeedTarget', 'castOpenComposer', ]) { assert.equal(core.split(`${key}:`).length - 1, 2, `${key} moet tweetalig zijn`); } });