const { test } = require('node:test'); const assert = require('node:assert/strict'); const path = require('node:path'); const { pathToFileURL } = require('node:url'); async function loadWebdavController() { return import(pathToFileURL(path.join(__dirname, '..', 'public/js/learningHub/webdavController.js')).href); } test('Learning Hub WebDAV helpers preserve icons and byte labels', async () => { const { formatBytes, getFileIcon } = await loadWebdavController(); assert.equal(getFileIcon('application/pdf', 'scan.bin'), 'fa-file-pdf'); assert.equal(getFileIcon('', 'note.md'), 'fa-file-lines'); assert.equal(getFileIcon('', 'page.html'), 'fa-file-code'); assert.equal(getFileIcon('', 'letter.docx'), 'fa-file-word'); assert.equal(getFileIcon('', 'archive.zip'), 'fa-file'); assert.equal(formatBytes(512), '512 B'); assert.equal(formatBytes(2048), '2 KB'); assert.equal(formatBytes(1572864), '1.5 MB'); }); test('Learning Hub WebDAV list rendering escapes paths and names', async () => { const { renderWebdavListHtml } = await loadWebdavController(); const html = renderWebdavListHtml({ path: '/Learning/Sub', parentPath: '/Learning?', items: [ { isDir: true, path: '/Learning/