import test from 'node:test' import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' const src = path => readFileSync(new URL(`../src/${path}`, import.meta.url), 'utf8') test('chaque import passe par le protocole fractionné avec progression en octets', () => { const manager = src('hooks/useUploadQueue.js') const api = src('api/client.js') assert.match(manager, /onUploadProgress: event/) assert.match(manager, /Math\.min\(part\.size, event\.loaded/) assert.match(manager, /drive\.startUpload\(/) assert.match(manager, /drive\.uploadStatus\(/) assert.match(manager, /drive\.uploadChunk\(/) assert.match(manager, /drive\.finishUpload\(/) assert.match(manager, /drive\.cancelUpload\(/) assert.match(manager, /requestRef\.current\?\.abort\(\)/) assert.match(api, /cancelUpload:id=>api\.delete/) }) test('un rafraichissement affiche un avertissement tant qu’un import reste en cours', () => { const manager = src('hooks/useUploadQueue.js') assert.match(manager, /addEventListener\('beforeunload'/) assert.match(manager, /event\.preventDefault\(\)/) assert.match(manager, /event\.returnValue = ''/) }) test('les dossiers partagés sont actualisés silencieusement sans rechargement', () => { const controller = src('hooks/useDriveController.js') assert.match(controller, /setInterval\(poll, 4000\)/) assert.match(controller, /document\.visibilityState/) assert.match(controller, /refresh\(true\)/) assert.match(controller, /requestSequence\.current/) }) test('les longs titres et les boutons du menu ne débordent plus', () => { const dialog = src('components/drive/dialogs/ItemActionsDialog.jsx') assert.match(dialog, /break-all/) assert.match(dialog, /grid-cols-1/) assert.match(dialog, /min-w-0/) })