Changeset cb1bd82 in Klonkt


Ignore:
Timestamp:
08/25/2026 07:38:35 PM (2 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
78b8e58
Parents:
824d1d0
Message:

Berichten-toetsen: layout eruit, overlap samengevoegd (zes worden twee)

Robins maat, 25-8: niet elke verandering behoefde een toets, en zeker
niet de toetsen die tegen de LAYOUT aan toetsen. Een toets die vastlegt
waar iets staat breekt bij de eerstvolgende verschuiving zonder dat er
iets stuk is.

Weg: de positietoets voor de antwoordrij (puur layout) en de
positie-assert van de zwaai-markering (kop voor bubbels -- ook layout).
Samengevoegd: volgorde en bron-onaangeroerd deelden al een render, en de
drie zwaai-gevallen (ontvangen, geen, eigen) zijn een regel met drie
kanten, geen drie toetsen.

Wat blijft zijn de twee BESLISSINGEN: binnen een gesprek leest het van
nieuw naar oud zonder de gedeelde array te draaien, en de
zwaai-markering volgt alleen een ontvangen zwaai. Tegenbewijs tegen de
partial van voor beide veranderingen (3e7dde2): daar vallen ze allebei,
dus ze bijten nog. Volle suite 1232 groen.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/messages-thread-order.test.js

    r824d1d0 rcb1bd82  
    1 // Binnen een gesprek leest Berichten van NIEUW naar OUD (Robins besluit,
    2 // 25-8), en een ontvangen zwaai staat in de KOP van de draad -- want ingeklapt
    3 // zijn de bubbels weg, en juist een zwaai vraagt om een antwoord.
     1// Twee beslissingen over Berichten (Robins besluit, 25-8), en niet meer dan
     2// dat: binnen een gesprek leest het van NIEUW naar OUD, en een ONTVANGEN zwaai
     3// zet een markering op de draad. Waar de dingen op de pagina STAAN wordt hier
     4// met opzet niet getoetst -- dat is layout, en een toets daarop breekt bij de
     5// eerstvolgende verschuiving zonder dat er iets stuk is.
    46//
    57// Dit rendert de echte partial. EJS-fouten bestaan alleen tijdens het renderen:
     
    3638const render = (n) => ejs.renderFile(partial, { ...helpers, n });
    3739
    38 test('binnen een gesprek staat het nieuwste bovenaan', async () => {
    39   const html = await render(draad());
     40test('binnen een gesprek leest het van nieuw naar oud, zonder de bron te draaien', async () => {
     41  const d = draad();
     42  const html = await render(d);
    4043  const nieuw = html.indexOf('NIEUWSTE'), midden = html.indexOf('MIDDELSTE'), oud = html.indexOf('OUDSTE');
    4144  assert.ok(nieuw > -1 && midden > -1 && oud > -1, 'alle drie de berichten staan er');
    42   assert.ok(nieuw < midden && midden < oud, `nieuwste bovenaan, kreeg N=${nieuw} M=${midden} O=${oud}`);
    43 });
    44 
    45 test('de draad-array zelf blijft oplopend', async () => {
    46   // groupConversations sorteert oplopend en de rest van de pagina rekent
    47   // daarop: `_tnew` en `_tto` lezen dezelfde array. Draaide de partial het
    48   // origineel om, dan werkt dat door naar alles wat er daarna naar kijkt.
    49   const d = draad();
    50   await render(d);
     45  assert.ok(nieuw < midden && midden < oud, `nieuwste eerst, kreeg N=${nieuw} M=${midden} O=${oud}`);
     46  // En de DOORGEGEVEN array blijft oplopend: groupConversations sorteert zo en
     47  // de rest van de pagina rekent daarop (`_tnew` en `_tto` lezen dezelfde
     48  // array). Draaide de partial het origineel om, dan werkt dat door naar alles
     49  // wat er daarna naar kijkt.
    5150  assert.deepEqual(d.messages.map((m) => m.name), ['OUDSTE', 'MIDDELSTE', 'NIEUWSTE']);
    5251});
    5352
    54 test('een ontvangen zwaai staat in de kop, voor de bubbels', async () => {
    55   const html = await render(draad());
    56   const kop = html.indexOf('msg-thread-wave');
    57   assert.ok(kop > -1, 'de kop draagt een zwaai-teken');
    58   assert.ok(kop < html.indexOf('msg-thread-msgs'), 'en staat in de kop, niet tussen de bubbels');
    59 });
    60 
    61 test('geen zwaai, geen teken', async () => {
     53test('de zwaai-markering volgt alleen een ONTVANGEN zwaai', async () => {
     54  // Wel een ontvangen zwaai: markering.
     55  assert.ok((await render(draad())).includes('msg-thread-wave'), 'een ontvangen zwaai markeert de draad');
     56  // Geen zwaai: geen markering.
    6257  const stil = draad();
    6358  stil.messages = stil.messages.map((m) => ({ ...m, wave: false }));
    64   assert.equal((await render(stil)).includes('msg-thread-wave'), false);
     59  assert.equal((await render(stil)).includes('msg-thread-wave'), false, 'geen zwaai, geen teken');
     60  // Een zwaai die JIJ stuurde: ook geen markering, dat is geen uitnodiging
     61  // aan jezelf.
     62  const eigen = draad({ messages: [{ type: 'sent', to_handle: '@bart@pruts.nl', wave: true, created_at: '2026-08-25T10:00:00Z' }] });
     63  assert.equal((await render(eigen)).includes('msg-thread-wave'), false, 'een eigen zwaai zet geen teken');
    6564});
    66 
    67 test('een zwaai die JIJ stuurde is geen uitnodiging aan jezelf', async () => {
    68   const eigen = draad({ messages: [{ type: 'sent', to_handle: '@bart@pruts.nl', wave: true, created_at: '2026-08-25T10:00:00Z' }] });
    69   assert.equal((await render(eigen)).includes('msg-thread-wave'), false);
    70 });
    71 
    72 test('antwoorden en zwaaien staan BOVEN de berichten', async () => {
    73   // Sinds het nieuwste bovenaan staat hoort de knop daar ook: onderaan zou hij
    74   // bij het OUDSTE bericht komen te staan, en daar antwoord je niet op.
    75   const html = await ejs.renderFile(partial, {
    76     ...helpers, canMutate: true,
    77     n: draad({ replyTo: { actorUri: 'https://pruts.nl/ap/users/bart' } }),
    78   });
    79   const acties = html.indexOf('msg-thread-actions');
    80   const bubbels = html.indexOf('msg-thread-msgs');
    81   assert.ok(acties > -1, 'de antwoordrij staat er');
    82   assert.ok(bubbels > -1, 'en de berichten ook');
    83   assert.ok(acties < bubbels, `antwoordrij boven de berichten, kreeg acties=${acties} bubbels=${bubbels}`);
    84   // De zwaai-hand hoort in diezelfde rij, dus ook boven de berichten.
    85   const zwaai = html.indexOf('class="msg-wave"');
    86   assert.ok(zwaai > -1 && zwaai < bubbels, 'de zwaai-hand staat in de rij erboven');
    87 });
Note: See TracChangeset for help on using the changeset viewer.