- Timestamp:
- 08/25/2026 07:38:35 PM (2 weeks ago)
- Branches:
- main
- Children:
- 78b8e58
- Parents:
- 824d1d0
- File:
-
- 1 edited
-
test/messages-thread-order.test.js (modified) (2 diffs)
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. 4 6 // 5 7 // Dit rendert de echte partial. EJS-fouten bestaan alleen tijdens het renderen: … … 36 38 const render = (n) => ejs.renderFile(partial, { ...helpers, n }); 37 39 38 test('binnen een gesprek staat het nieuwste bovenaan', async () => { 39 const html = await render(draad()); 40 test('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); 40 43 const nieuw = html.indexOf('NIEUWSTE'), midden = html.indexOf('MIDDELSTE'), oud = html.indexOf('OUDSTE'); 41 44 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. 51 50 assert.deepEqual(d.messages.map((m) => m.name), ['OUDSTE', 'MIDDELSTE', 'NIEUWSTE']); 52 51 }); 53 52 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 () => { 53 test('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. 62 57 const stil = draad(); 63 58 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'); 65 64 }); 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 hij74 // 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.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)