Changeset aed0092 in Klonkt for test


Ignore:
Timestamp:
08/11/2026 06:35:19 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
960f015
Parents:
cb3001e
Message:

Elke collectie pagineert nu, via een helper in plaats van tien keer dezelfde regels

Vervolg op cb3001e, waar alleen de outbox eraan geloofde omdat Funkwhale daar
over viel. Robins opdracht: de rest ook, om compleetheid te garanderen. Dat is
de goede volgorde -- een foutmelding repareren waar hij valt laat de volgende
lezer op de volgende collectie stuklopen.

pagedCollection in ap-core, en daar hangen ze nu allemaal aan:

outbox followers following featured
tracks playlists playlist post-tracks
replies + de zeven guardianship-wachtrijen

De items blijven overal INLINE op de wortel; first en last wijzen naar dezelfde
pagina, want onze collecties zijn gekapt en er is er precies een. Wie ze vandaag
zonder pagineren leest -- Shaer doet dat -- merkt er niets van.

DRIE PLEKKEN DIE BEWUST AFWIJKEN, want een sleepnet is geen zorgvuldigheid:

  • de guardianship-wachtrijen krijgen hun @context van de route (queueRoute), dus daar staan de velden er met de hand bij. pagedCollection zou de context een tweede keer toevoegen.
  • de thread-collectie draagt al een ?object= in zijn id. Daar ?page= achteraan plakken pagineert niets, het herhaalt de vraag. Owner-only en door Shaer gelezen, dus geen federatiebelang.
  • followers en following geven publiek alleen een AANTAL. Die krijgen de velden juist wel: anders is "ik mag de lijst niet zien" niet te onderscheiden van een kapot antwoord -- dezelfde stille dubbelzinnigheid die we vandaag bij een ander aantroffen.

Vier tests erbij, waaronder een die bewaakt dat de helper attributedTo niet
opeet en een die bewaakt dat de wachtrijen GEEN eigen @context krijgen.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/ap-outbox-paging.test.js

    rcb3001e raed0092  
    6262  assert.equal(leeg.last, `${OUT}?page=1`);
    6363});
     64
     65// ── En de andere collecties, want compleetheid was de opdracht ────────────
     66
     67test('followers en following dragen ze ook, ook count-only', () => {
     68  // Publiek geven die alleen een AANTAL en houden de lijst dicht. Juist dan is
     69  // een geldige collectie belangrijk: anders is "ik mag de lijst niet zien"
     70  // niet te onderscheiden van een kapot antwoord.
     71  const f = AP.buildFollowers(BASE, site, 42, null);
     72  assert.equal(f.totalItems, 42);
     73  assert.deepEqual(f.orderedItems, []);
     74  assert.equal(f.first, `${BASE}/ap/users/dev/followers?page=1`);
     75  const g = AP.buildFollowing(BASE, site, 3, null);
     76  assert.equal(g.first, `${BASE}/ap/users/dev/following?page=1`);
     77  assert.equal(g.last, `${BASE}/ap/users/dev/following?page=1`);
     78});
     79
     80test('featured ook', () => {
     81  const ft = AP.buildFeatured(BASE, site, [POST]);
     82  assert.equal(ft.first, `${BASE}/ap/users/dev/featured?page=1`);
     83  assert.equal(ft.orderedItems.length, 1, 'en de items blijven inline');
     84});
     85
     86test('de muziekcollecties ook, met hun eigen velden erbij', () => {
     87  const tc = AP.buildTrackCollection(BASE, site, []);
     88  assert.equal(tc.first, `${BASE}/ap/users/dev/tracks?page=1`);
     89  assert.equal(tc.attributedTo, `${BASE}/ap/users/dev`,
     90    'de helper mag attributedTo niet opeten');
     91});
     92
     93test('de guardianship-wachtrijen ook', async () => {
     94  const q = await import('../src/services/guardianship/queues.js');
     95  const c = q.helpCollection('https://ons.test/q/help', 'dev');
     96  assert.equal(c.first, 'https://ons.test/q/help?page=1');
     97  assert.equal(c['@context'], undefined,
     98    'de context zet de route erop -- twee keer zou hem ongeldig maken');
     99});
Note: See TracChangeset for help on using the changeset viewer.