- Timestamp:
- 08/14/2026 03:19:09 AM (4 weeks ago)
- Branches:
- main
- Children:
- a5515b4
- Parents:
- 7e474f7
- File:
-
- 1 edited
-
test/migrate-page.test.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
test/migrate-page.test.js
r7e474f7 rbfadc15 12 12 import assert from 'node:assert/strict'; 13 13 import fs from 'fs'; 14 const i18nMod = await import('../src/services/i18n.js'); 14 15 15 16 process.env.DATABASE_PATH = ':memory:'; … … 107 108 // beschrijft die niet bestaat is erger dan geen stappenplan. 108 109 const i18n = await import('../src/services/i18n.js'); 110 // Op BETEKENIS toetsen, niet op een woord. Deze test brak toen "alias" uit de 111 // teksten verdween, en dat is precies de verkeerde reden om rood te worden: 112 // het jargon weghalen was de bedoeling. 109 113 const nl = i18n.t('nl', 'mig.plan_5_why'); 110 assert.match(nl, /verwijder/i, 'de Delete-ronde');111 assert.match(nl, / alias/i, 'en de aliasweghalen');114 assert.match(nl, /verwijder/i, 'de berichten opruimen'); 115 assert.match(nl, /stap 1/i, 'en de koppeling met je vorige account weghalen'); 112 116 assert.match(nl, /nog geen knop/i, 'en eerlijk dat het handwerk is'); 113 117 }); 118 119 test('de teksten praten geen jargon', () => { 120 // Robin: er zijn miljoenen Klonkt-gebruikers, dus het moet gebruiksvriendelijk. 121 // Woorden als alias, actor, instantie en fediverse zeggen een ontwikkelaar 122 // alles en een gebruiker niets. Deze test bewaakt dat ze niet terugsluipen. 123 const jargon = /\b(alias(sen)?|claimen|actor|instantie|AP-id|origin|slug|URI)\b/i; 124 const sleutels = [ 125 'lead', 'alias_title', 'alias_hint', 'alias_label', 'alias_note', 'alias_btn', 126 'import_hint', 'file_label', 'overwrite_label', 'overwrite_hint', 'r_new_ids', 127 'pull_hint', 'pull_source', 'pull_source_hint', 'move_hint', 'move_warn', 128 'plan_hint', 'plan_1', 'plan_1_why', 'plan_5_why', 129 'e_no_backreference', 'e_not_moved_here', 'e_no_source', 130 ]; 131 const fout = []; 132 for (const l of ['nl', 'en', 'de']) { 133 for (const k of sleutels) { 134 const t = i18nMod.t(l, `mig.${k}`); 135 const m = jargon.exec(t); 136 if (m) fout.push(`${l}/${k}: "${m[0]}"`); 137 } 138 } 139 assert.deepEqual(fout, [], `jargon teruggeslopen: ${fout.join(', ')}`); 140 }); 141 142 test('een gekoppeld account komt terug als handle, niet als URL', async () => { 143 // Je typt @jij@mastodon.social en wij slaan de actor-URL op, want daar draait 144 // het protocol op. Zonder deze vertaling terug kreeg je een adres te zien dat 145 // je nooit hebt ingetypt en niet herkent. 146 const AP = await import('../src/services/ActivityPubService.js'); 147 assert.equal(AP.deriveHandle('https://oud.example/ap/users/robo'), '@robo@oud.example'); 148 // En als er geen fatsoenlijke handle uit te halen valt blijft de URL staan: 149 // een verkeerde handle is erger dan een lelijke URL. 150 const raar = AP.deriveHandle('https://oud.example/'); 151 assert.ok(!/^@[^@\s]+@[^@\s]+$/.test(raar) || raar === '@oud.example@oud.example', 152 `onverwachte handle uit een pad zonder naam: ${raar}`); 153 });
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)