Changeset 5a49eba in Klonkt for test/conversations.test.js


Ignore:
Timestamp:
08/14/2026 12:50:20 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
f894be5
Parents:
19430fa (diff), 2365630 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge remote-tracking branch 'github/main'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/conversations.test.js

    r19430fa r5a49eba  
    4141// Een PUBLIEK antwoord aan een vreemde is geen gesprek.
    4242sent('mijn-publiek', VREEMDE, '2026-08-09T12:00:00Z', 'public');
     43
     44// ── De vorm van een stempel ───────────────────────────────────────────────
     45//
     46// Barts melding (14-8): in Berichten stond een bericht van 00:30 boven een
     47// antwoord van 20:22 de avond ervoor, op iOS en op Android. De oorzaak zat
     48// niet in de clients maar hier: de twee poten van de unie leverden een ANDERE
     49// VORM. SQLite's CURRENT_TIMESTAMP schrijft '2026-08-13 22:30:12', een object
     50// draagt '2026-08-13T20:22:00Z', en soms met milliseconden erbij. Als tekst
     51// vergeleken staat op plek 10 een spatie tegen een T, en een spatie is kleiner
     52// -- dus stond binnen dezelfde dag alles wat jij stuurde vóór alles wat
     53// binnenkwam.
     54//
     55// De toetsen hierboven gebruikten overal dezelfde ISO-vorm en konden hier dus
     56// niet op falen. Deze zet ze door elkaar, precies zoals de echte database.
     57//
     58// Eigen site, want de toetsen hierboven tellen ALLE gesprekken van 'kind' en
     59// een gezicht erbij zou ze laten vallen om een reden die er niets mee te maken
     60// heeft.
     61db.prepare('INSERT INTO sites (id, slug, title, owner_id) VALUES (?,?,?,?)').run('s2', 'buur', 'Buur', 'u1');
     62const BUURMAN = 'https://elders/u/buurman';
     63const kwam = (uri, stamp) =>
     64  db.prepare(`INSERT INTO ap_mentions (slug, object_uri, actor_uri, actor_name, content, published)
     65              VALUES ('buur', ?, ?, 'buurman', '<p>hoi</p>', ?)`).run(uri, BUURMAN, stamp);
     66const ging = (id, stamp) =>
     67  db.prepare(`INSERT INTO ap_outbox (id, site_slug, post_id, to_actor, to_actors, content, visibility, created_at)
     68              VALUES (?, 'buur', 'p1', ?, ?, '<p>terug</p>', 'direct', ?)`)
     69    .run(id, BUURMAN, JSON.stringify([BUURMAN]), stamp);
     70
     71kwam('https://elders/n/buur-mid', '2026-08-13T14:17:45.000Z');
     72ging('mijn-buur-1', '2026-08-13 16:16:00');
     73kwam('https://elders/n/buur-avond', '2026-08-13T20:22:00Z');
     74ging('mijn-buur-2', '2026-08-13 22:30:12');
     75
     76test('vormen door elkaar sorteren op de KLOK, niet op hun schrijfwijze', () => {
     77  const talk = AP.conversationHistory('buur', BUURMAN, { limit: 60 });
     78  assert.deepEqual(talk.rows.map((r) => r.ref), [
     79    'mijn-buur-2',                      // 22:30
     80    'https://elders/n/buur-avond',      // 20:22
     81    'mijn-buur-1',                      // 16:16
     82    'https://elders/n/buur-mid',        // 14:17
     83  ], 'nieuwste eerst, om en om -- niet eerst al het uitgaande');
     84});
     85
     86test('de stempel komt er in EEN vorm uit, want de client rekent ermee', () => {
     87  // new Date('2026-08-13 22:30:12') leest in JavaScript als LOKALE tijd en
     88  // '...T22:30:12Z' als UTC. Dezelfde rij gaf dus een leeftijd die per vorm
     89  // uren verschilde, en daar hangt in de hemel de afstand tot het midden aan.
     90  const talk = AP.conversationHistory('buur', BUURMAN, { limit: 60 });
     91  for (const r of talk.rows) {
     92    assert.match(r.stamp, /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/, `stempel ${r.stamp}`);
     93  }
     94});
     95
     96test('de cursor blijft werken over de vormen heen', () => {
     97  const eerste = AP.conversationHistory('buur', BUURMAN, { limit: 2 });
     98  assert.equal(eerste.more, true);
     99  const tweede = AP.conversationHistory('buur', BUURMAN, { limit: 2, before: eerste.oldest });
     100  assert.deepEqual(
     101    [...eerste.rows, ...tweede.rows].map((r) => r.ref),
     102    ['mijn-buur-2', 'https://elders/n/buur-avond', 'mijn-buur-1', 'https://elders/n/buur-mid'],
     103    'twee pagina\'s samen zijn hetzelfde gesprek',
     104  );
     105});
    43106
    44107test('de oude lezing verliest tante achter een druk gesprek -- dat is de bug', () => {
Note: See TracChangeset for help on using the changeset viewer.