Changeset 709dc6f in Klonkt for test/outgoing-follow-gate.test.js
- Timestamp:
- 08/09/2026 04:59:31 PM (4 weeks ago)
- Branches:
- main
- Children:
- 89d3c06
- Parents:
- e62eee4
- File:
-
- 1 edited
-
test/outgoing-follow-gate.test.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
test/outgoing-follow-gate.test.js
re62eee4 r709dc6f 152 152 assert.notEqual(uit && uit.held, true); 153 153 }); 154 155 // ── shaer:following als eigen poort (shaer-p729) ────────────────────────── 156 // De uitgaande kant stond als één rij met de inkomende in het paneel, en dan 157 // telt een guardian de ene richting en hoort niets over de andere. Nu twee 158 // poorten. Het VERSCHIL tussen die twee is opzet: §5.3 eist dat een Follow 159 // NAAR een ward langs de guardians gaat, dus die staat vast aan. Over deze 160 // richting zegt de FEP niets, dus die is van ons -- en dan hoort hij ook echt 161 // losgelaten te kunnen worden. 162 163 test('onbeslist betekent dicht voor een ward, net als bij de andere poorten', async () => { 164 const wim = site('wim'); 165 guards('wim', local('mum')); 166 const held = await AP.gateOutgoingFollow(wim, 'https://elders.example/users/nieuw'); 167 assert.ok(held, 'niemand heeft er iets over besloten, dus vragen we'); 168 }); 169 170 test('de guardians kunnen de poort openzetten, en dan vraagt het kind niets meer', async () => { 171 const zoe = site('zoe'); 172 guards('zoe', local('mum')); 173 db.prepare('UPDATE sites SET gate_following = 1 WHERE slug = ?').run('zoe'); 174 const zoeSite = db.prepare('SELECT * FROM sites WHERE slug = ?').get('zoe'); 175 assert.equal(await AP.gateOutgoingFollow(zoeSite, 'https://elders.example/users/nieuw'), null, 176 'een kind dat erin gegroeid is hoeft niet eeuwig te blijven vragen'); 177 }); 178 179 test('en weer dicht is ook een besluit', async () => { 180 const zoeSite = db.prepare('SELECT * FROM sites WHERE slug = ?').get('zoe'); 181 db.prepare('UPDATE sites SET gate_following = 0 WHERE slug = ?').run('zoe'); 182 const dicht = db.prepare('SELECT * FROM sites WHERE slug = ?').get('zoe'); 183 assert.ok(await AP.gateOutgoingFollow(dicht, 'https://elders.example/users/weer'), 184 'terugdraaien kan: de poort is reversible'); 185 assert.equal(zoeSite.gate_following, 1, '(en de oude rij was echt open)'); 186 }); 187 188 test('de twee richtingen tellen apart in het paneel', async () => { 189 const queues = await import('../src/services/guardianship/queues.js'); 190 const rows = queues.wardGates('mum', local('kid')); 191 const namen = rows.map((r) => r.feature); 192 assert.ok(namen.includes('shaer:follows'), 'wie het kind wil volgen'); 193 assert.ok(namen.includes('shaer:following'), 'en wie het kind wil volgen -- andersom'); 194 const uit = rows.find((r) => r.feature === 'shaer:following'); 195 assert.equal(uit.adjustable, true, 'deze mag verzet worden'); 196 const inn = rows.find((r) => r.feature === 'shaer:follows'); 197 assert.equal(inn.adjustable, false, 'en deze niet: §5.3 laat er geen ruimte voor'); 198 });
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)