Changeset f3a2556 in Klonkt for test


Ignore:
Timestamp:
08/08/2026 06:35:21 AM (5 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
2bfe26c
Parents:
cf5073b
git-author:
Robin <roboburr@…> (08/08/2026 06:35:19 AM)
git-committer:
roboburr <roboburr@…> (08/08/2026 06:35:21 AM)
Message:

De apps kunnen nu zien wat er voor een ward gated is (shaer-ahy.1)

Bart: iOS en Android op hetzelfde plan als de PWA. Dit is het blokkerende stuk --
zonder dit kan geen app een poort tonen.

wardsCollection gaf {id, handle, since}. Een app kon een ward dus wel TONEN maar
niets over hem zeggen, en dat is precies de helft van het antwoord op "wat mag
dit kind". Er zit nu shaer:gates bij: dezelfde rijen als het PWA-paneel, met
soort, drempel, lopend voorstel en omkeerbaarheid.

UIT DEZELFDE FUNCTIE, en dat is de kern. wardGates stond in routes/guardian.js
en daar kon alleen de PWA erbij. Een tweede berekening ernaast zou vroeg of laat
een ander antwoord geven op dezelfde vraag -- geen schoonheidsfoutje, maar twee
guardians die een verschillend beeld van hetzelfde kind krijgen. Verplaatst naar
queues.js; beide schermen lezen er nu uit, en een toets vergelijkt de twee
uitkomsten letterlijk met deepEqual.

Suite 688/688; zonder de nieuwe regel vallen er twee om.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/guardian-gate-panel.test.js

    rcf5073b rf3a2556  
    145145  }
    146146});
     147
     148// ── Dezelfde poorten voor het paneel en voor de apps (shaer-ahy.1) ───────
     149
     150test('de wards-queue draagt de poorten mee', async () => {
     151  // Zonder dit kon een app een ward wel TONEN maar niets over hem zeggen. De
     152  // apps lezen deze collectie; het PWA-paneel leest wardGates rechtstreeks.
     153  const q = await import('../src/services/guardianship/queues.js');
     154  const rel = await import('../src/services/guardianship/relations.js');
     155  const dbm = await import('../src/config/database.js');
     156  dbm.initializeDatabase();
     157  dbm.default.prepare('INSERT OR IGNORE INTO users (id, username, email, password_hash, role) VALUES (?,?,?,?,?)')
     158    .run('gu', 'gu', 'gu@t', 'x', 'god');
     159  dbm.default.prepare('INSERT OR IGNORE INTO sites (id, slug, title, owner_id) VALUES (?,?,?,?)').run('gs', 'oma', 'Oma', 'gu');
     160  rel.commitWardForGuardian('oma', 'https://elders/ap/users/kind', { handle: '@kind' });
     161
     162  const coll = q.wardsCollection('https://x/queues/wards', 'oma');
     163  const ward = coll.orderedItems.find((w) => w.id === 'https://elders/ap/users/kind');
     164  assert.ok(ward, 'de ward staat in de collectie');
     165  assert.ok(Array.isArray(ward['shaer:gates']), 'en draagt zijn poorten');
     166  assert.equal(ward['shaer:gates'].length, gated.GATE_CATALOGUE.length);
     167});
     168
     169test('de app krijgt PRECIES dezelfde rijen als het paneel', async () => {
     170  // Twee berekeningen naast elkaar geven vroeg of laat een ander antwoord op
     171  // dezelfde vraag, en dat is hier geen schoonheidsfoutje: dan krijgen twee
     172  // guardians een verschillend beeld van hetzelfde kind.
     173  const q = await import('../src/services/guardianship/queues.js');
     174  const coll = q.wardsCollection('https://x/queues/wards', 'oma');
     175  const uitQueue = coll.orderedItems.find((w) => w.id === 'https://elders/ap/users/kind')['shaer:gates'];
     176  const uitPaneel = q.wardGates('oma', 'https://elders/ap/users/kind');
     177  assert.deepEqual(uitQueue, uitPaneel);
     178});
Note: See TracChangeset for help on using the changeset viewer.