Changeset 47f1183 in Klonkt for test


Ignore:
Timestamp:
08/14/2026 03:02:35 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
7e474f7
Parents:
f704237
Message:

Een stappenplan op de migrate-pagina, en de volgorde klopte niet

Robin: misschien moeten we bij migrate een stappenplan beschrijven, waaronder
dus ook dit (de Delete-ronde voor je een domein opzegt).

Bij het uitschrijven bleek de pagina zelf een verkeerde volgorde te suggereren.
Ik noemde het aankondigen "de laatste stap", maar ingestFromSource weigert met
not_moved_here zolang movedTo niet naar ons wijst. De ophaalknop werkt dus PAS
nadat de Move gedaan is. Aankondigen is stap 2, niet de afsluiter.

Met een zip mag het juist andersom: een bestand vraagt niemand toestemming. Die
twee volgordes naast elkaar zijn precies het soort ding waar je halverwege op
vastloopt zonder te snappen waarom, dus staan ze er nu uitgeschreven.

DE PAGINA DRAAIT OP BEIDE INSTANTIES. Stap 1, 3 en 4 horen op de nieuwe kant,
stap 2 en 5 op de oude. Een vast "hier" is dus op de helft van de schermen
onzin. Het plan draait mee met waar je kijkt, en op de vertrekkende kant staat
er een regel boven dat je naar de instantie kijkt die weggaat.

Die omkering had ik bij het bouwen precies verkeerd om: beide labels werden
"hier". Zag ik pas door hem te renderen, niet door hem te lezen.

STAP 5 heeft geen knop, en dat staat erbij. Verwijder je oude berichten voor je
het domein opzegt, zodat boosts van anderen netjes verdwijnen in plaats van te
blijven staan als kapotte kaart; haal daarna de alias weg, want die wijst naar
een adres dat je niet meer beheert. Een stappenplan dat een knop belooft die er
niet is, is erger dan geen stappenplan.

Changed files:
src/routes/admin-migrate.js

  • stappen(): afleiden wat af is uit aliassen, moved_to, de moves-collectie en de vertaaltabel; meegegeven aan alle drie de renders

src/views/pages/admin-migrate.ejs

  • het stappenplan bovenaan, met vinkjes en een waar-label per stap
  • de labels draaien om vanaf de vertrekkende kant

src/services/i18n.js

  • mig.plan_* in nl/en/de
  • mig.move_title is "Stap 2" en niet meer "Laatste stap"
  • de waarschuwing zegt nu dat dit EERST moet bij de ophaalknop

test/migrate-page.test.js

  • het plan staat boven de knoppen die het beschrijft
  • de perspectiefwissel, met de eis dat de twee labels nooit gelijk zijn
  • geen "laatste stap" meer in een van de drie talen
  • stap 5 noemt de Delete-ronde, de alias en dat er geen knop is

remarks: gerenderd vanaf beide kanten om het te controleren. Suite 1013 groen,
tegenproef op de perspectiefwissel.

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/migrate-page.test.js

    rf704237 r47f1183  
    6464    'je claim op je oude account mag niet sneuvelen op een kleurwijziging');
    6565});
     66
     67// ── Het stappenplan ───────────────────────────────────────────────
     68
     69test('het stappenplan zet de volgorde vast die niemand raadt', () => {
     70  const ejs = fs.readFileSync('src/views/pages/admin-migrate.ejs', 'utf8');
     71  const plan = ejs.indexOf('mig-steps');
     72  const alias = ejs.indexOf('name="ap_aliases"');
     73  assert.ok(plan > -1, 'er hoort een stappenplan te staan');
     74  assert.ok(plan < alias, 'en bovenaan, voor de knoppen die het beschrijft');
     75});
     76
     77test('"hier" draait om als je vanaf de vertrekkende kant kijkt', async () => {
     78  // Deze pagina draait op BEIDE instanties. Stap 1, 3 en 4 horen op de nieuwe,
     79  // stap 2 en 5 op de oude. Een vaste tekst is dus op de helft van de schermen
     80  // onzin. Ik had ze bij het bouwen precies verkeerd om: beide labels werden
     81  // "hier", en dat zag ik pas door het te renderen.
     82  const ejs = fs.readFileSync('src/views/pages/admin-migrate.ejs', 'utf8');
     83  const m = /var _hier = stap\.isOud \? t\('([a-z.\_]+)'\)\s*:\s*t\('([a-z.\_]+)'\)/.exec(ejs);
     84  const d = /var _daar = stap\.isOud \? t\('([a-z.\_]+)'\)\s*:\s*t\('([a-z.\_]+)'\)/.exec(ejs);
     85  assert.ok(m && d, 'de perspectief-variabelen horen er te zijn');
     86  assert.equal(m[1], 'mig.plan_new',  'op de oude kant wijst stap 1/3/4 naar de NIEUWE');
     87  assert.equal(m[2], 'mig.plan_here', 'op de nieuwe kant is dat gewoon hier');
     88  assert.equal(d[1], 'mig.plan_here', 'en het aankondigen gebeurt dan HIER');
     89  assert.equal(d[2], 'mig.plan_old',  'terwijl je vanaf de nieuwe kant naar de oude wijst');
     90  assert.notEqual(m[1], d[1], 'de twee mogen nooit hetzelfde label krijgen');
     91});
     92
     93test('het aankondigen heet geen "laatste stap" meer', async () => {
     94  // Het was er wel een in mijn hoofd, maar niet in de code: de ophaalknop
     95  // weigert met not_moved_here zolang de Move niet gedaan is. Aankondigen is
     96  // dus stap 2, niet de afsluiter.
     97  const i18n = await import('../src/services/i18n.js');
     98  for (const l of ['nl', 'en', 'de']) {
     99    const t = i18n.t(l, 'mig.move_title');
     100    assert.doesNotMatch(t, /laatste|last step|letzter/i, `${l}: ${t}`);
     101    assert.match(t, /2/, `${l}: het is stap 2, en dat hoort er te staan`);
     102  }
     103});
     104
     105test('stap 5 vertelt wat er moet gebeuren voor je het domein loslaat', async () => {
     106  // Er is geen knop voor, en dat staat er ook bij. Een stappenplan dat een stap
     107  // beschrijft die niet bestaat is erger dan geen stappenplan.
     108  const i18n = await import('../src/services/i18n.js');
     109  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 alias weghalen');
     112  assert.match(nl, /nog geen knop/i, 'en eerlijk dat het handwerk is');
     113});
Note: See TracChangeset for help on using the changeset viewer.