Changeset 41de7cb in Klonkt for test/conversations.test.js


Ignore:
Timestamp:
08/10/2026 04:13:24 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
21ef238
Parents:
f0a33e1
Message:

Een kopje draagt ook het nieuwste bericht VAN de ander

Op het toestel gezien: de hemel noemde mensen opeens 'boiert' en
'hotelbreakfast' in plaats van hun naam, en tekende letters in plaats van
gezichten. Oorzaak: is het nieuwste bericht in een gesprek van MIJ, dan draagt
het kopje mijn byline, en de hemel zoekt naam en gezicht van de ander in een
bericht VAN de ander. Vond hij dat niet, dan viel hij terug op het staartje van
de actor-uri.

conversationHeads geeft nu twee rijen per persoon: het nieuwste bericht (dat
bepaalt waar iemand hangt) en het nieuwste bericht van hem. Vallen ze samen,
dan blijft het een rij. Geen clientwijziging nodig -- conversationsFrom maakt er
dezelfde Conversation van.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/conversations.test.js

    rf0a33e1 r41de7cb  
    5050test('een rij per tegenpartij, hoe druk de drukste ook is', () => {
    5151  const heads = AP.conversationHeads('kind');
    52   assert.deepEqual(heads.map((k) => k.other), [OMA, TANTE], 'nieuwste gesprek eerst, allebei aanwezig');
     52  assert.deepEqual([...new Set(heads.map((k) => k.other))], [OMA, TANTE], 'nieuwste gesprek eerst, allebei aanwezig');
     53});
     54
     55test('is het nieuwste bericht van MIJ, dan gaat dat van hem ook mee', () => {
     56  // Anders draagt het kopje mijn byline en zoekt de hemel de naam en het
     57  // gezicht van de ander tevergeefs -- die viel dan terug op het staartje van
     58  // de actor-uri. Bij tante is mijn antwoord het nieuwste.
     59  const vanTante = AP.conversationHeads('kind').filter((k) => k.other === TANTE);
     60  assert.equal(vanTante.length, 2);
     61  assert.deepEqual(vanTante.map((k) => k.direction).sort(), ['in', 'out']);
     62  // Bij oma is het nieuwste al van haar: dan is een rij genoeg.
     63  assert.equal(AP.conversationHeads('kind').filter((k) => k.other === OMA).length, 1);
    5364});
    5465
     
    110121  const list = await get(`${slug}/conversations`);
    111122  assert.equal(list.status, 200);
    112   assert.equal(list.body.totalItems, 2, 'oma en tante, en niet de publieke vreemde');
     123  // Drie items voor twee mensen: bij tante gaat haar eigen bericht mee omdat
     124  // het nieuwste van mij is (anders mist de hemel haar naam en gezicht).
     125  assert.equal(list.body.totalItems, 3);
     126  assert.ok(!JSON.stringify(list.body).includes(VREEMDE), 'de publieke vreemde is geen gesprek');
     127  const vanTante = list.body.orderedItems.filter((i) => i.actor === TANTE);
     128  assert.equal(vanTante.length, 1, 'en dat bericht van tante draagt haar byline');
     129  assert.ok(vanTante[0].object.attributedTo.name);
    113130  // De byline zit in de ingesloten actor, net als overal sinds shaer-nmw.
    114131  assert.ok(list.body.orderedItems.every((i) => i.object.attributedTo));
Note: See TracChangeset for help on using the changeset viewer.