Changeset 3155d8c in Klonkt for test


Ignore:
Timestamp:
10/29/2026 05:50:58 PM (3 hours ago)
Author:
Bart <bart@…>
Branches:
main
Parents:
e4119c2
Message:

Inbox: ?random=1, een greep uit je geschiedenis (shaer-ewrt)

Een pagina vanaf een willekeurige post, voor 'Load random' met inbox-zero
aan. Het id is zijn echte ?before=-adres en next loopt van daar door.

Co-Authored-By: Claude Opus 5.5 <claude@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/inbox-ouder.test.js

    re4119c2 r3155d8c  
    155155  assert.ok(p.next.endsWith('&limit=10'), 'anders wordt de tweede pagina stilletjes de standaard');
    156156});
     157
     158// ── Een greep uit je geschiedenis (inbox-zero) ─────────────────────────────
     159
     160test('een willekeurige pagina begint bij een post, en loopt van daar gewoon door', () => {
     161  // Alle tijdlijnrijen op volgorde, zoals de unie ze ziet.
     162  const posts = AP.inboxPage('lezer', { limit: 500 }).rows.filter((r) => r.leg === 'timeline');
     163  for (const k of [0, 1, 40, posts.length - 1]) {
     164    const p = AP.inboxRandomPage('lezer', { limit: 10, rnd: () => k / posts.length });
     165    const eerstePost = p.rows.find((r) => r.leg === 'timeline');
     166    assert.equal(eerstePost.ref, posts[k].ref, `anker ${k} is de eerste post van de pagina`);
     167    // En het is een echte pagina: met zijn start opnieuw gevraagd geeft hij hetzelfde.
     168    if (p.start) assert.deepEqual(AP.inboxPage('lezer', { before: p.start, limit: 10 }).rows, p.rows);
     169  }
     170  // Een lege geschiedenis is geen fout.
     171  assert.deepEqual(AP.inboxRandomPage('niemand', { limit: 10 }).rows, []);
     172});
     173
     174test('?random=1 geeft een pagina die zichzelf naar zijn echte begin noemt', async () => {
     175  for (let i = 0; i < 5; i++) {
     176    const p = await haal(`http://127.0.0.1:${poort}/ap/users/lezer/inbox?random=1&limit=15`);
     177    assert.equal(p.type, 'OrderedCollectionPage');
     178    assert.ok(p.partOf.endsWith('/ap/users/lezer/inbox'));
     179    assert.ok(p.orderedItems.length > 0);
     180    assert.ok(p.orderedItems.some((x) => x.object && String(x.object.id).startsWith('https://elders/n/')), 'er zit een post in');
     181    if (p.id.includes('?before=')) {
     182      const zelfde = await haal(p.id);
     183      assert.deepEqual(zelfde.orderedItems.map(idVan), p.orderedItems.map(idVan), 'het id is een adres, niet een toevalstreffer');
     184      assert.ok(p.id.endsWith('&limit=15'));
     185    }
     186  }
     187});
Note: See TracChangeset for help on using the changeset viewer.