- Timestamp:
- 08/14/2026 01:43:59 AM (4 weeks ago)
- Branches:
- main
- Children:
- dc802b4
- Parents:
- 9f9b45f
- Location:
- test
- Files:
-
- 2 edited
-
archive-audio.test.js (modified) (1 diff)
-
fep1580-migration.test.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
test/archive-audio.test.js
r9f9b45f r861c228 234 234 }); 235 235 236 test('ook een zip-import buigt links naar de bronpost om', () => { 237 // Robin: "het moet wel gebeuren bij migratie direct ook". Een zip-import is 238 // net zo goed een verhuizing, dus dezelfde regel. 239 leeg(); 240 try { db.prepare('DELETE FROM posts').run(); } catch { /* leeg */ } 241 db.prepare(`INSERT INTO posts (id, site_id, author_id, slug, title, content, status, published_at) 242 VALUES ('pl1','s1','u1','tiktik','TikTik','<p><a href="https://oud.test/tiktik?fc=2">luister</a></p>','published','2026-01-01T10:00:00Z')`).run(); 243 const uit = AX.buildArchive('me'); 244 245 db.prepare('DELETE FROM posts').run(); 246 // De import doet alsof het archief van oud.test komt; deze site is oud.test 247 // niet, dus de links moeten om. 248 const files = new Map(uit.files); 249 const man = JSON.parse(files.get('manifest.json').toString('utf8')); 250 man.origin = 'https://oud.test'; 251 files.set('manifest.json', Buffer.from(JSON.stringify(man))); 252 253 const r = AI.importArchive(files, { slug: 'me', origin: 'https://nieuw.test' }); 254 const c = db.prepare("SELECT content FROM posts WHERE slug = 'tiktik'").get().content; 255 assert.ok(c.includes('href="/tiktik?fc=2"'), `omgebogen naar hier, kreeg: ${c}`); 256 assert.ok(!c.includes('oud.test'), 'niets wijst meer naar de bron'); 257 assert.equal(r.linksBijgetrokken, 1, 'en het verslag zegt het'); 258 }); 259 236 260 test.after(() => { try { fs.rmSync(TMP, { recursive: true, force: true }); } catch { /* niets */ } }); -
test/fep1580-migration.test.js
r9f9b45f r861c228 577 577 }); 578 578 579 test('links naar de bronpost buigen om naar hier, in dezelfde ronde', async () => { 580 // De gebakken "luister op"-links: buildNote zet 581 // https://oud/<slug>#track-<id> en ?fc=2 in de content. Die bleven naar de 582 // oude site wijzen, en dat is een tijdbom: zodra dat domein weg is staan er 583 // dode links in je eigen berichten. Slugs en track-ids blijven behouden, dus 584 // de fragmenten kloppen vanzelf zodra de host eraf is. 585 const s = site({ aliases: [BRON] }); 586 const OUD = 'https://oud.example'; 587 const kaart = new Map([ 588 [BRON, { id: BRON, type: 'Person', movedTo: IK, outbox: `${BRON}/outbox` }], 589 [`${BRON}/outbox`, { type: 'OrderedCollection', totalItems: 2, first: `${BRON}/outbox?page=1` }], 590 [`${BRON}/outbox?page=1`, { type: 'OrderedCollectionPage', orderedItems: [ 591 note(`${BRON}/notes/tiktik`, { url: `${OUD}/tiktik`, content: 592 `<p>🎵 <a href="${OUD}/tiktik#track-t1">TikTik</a> — <a href="${OUD}/tiktik?fc=2">luister</a></p>` }), 593 // een link naar iets dat we NIET hebben blijft met rust 594 note(`${BRON}/notes/ander`, { url: `${OUD}/ander`, content: 595 `<p>zie <a href="${OUD}/bestaat-hier-niet">daar</a></p>` }), 596 ] }], 597 ]); 598 const r = await stil(() => Mig.ingestFromSource(s, { deps: { 599 getJson: async (_s, url) => kaart.get(url) || null, 600 noteId: (b, id) => `${b}/ap/notes/${id}`, 601 noteVisibility: AP.noteVisibility, 602 } })); 603 assert.equal(r.posts, 2); 604 const tik = db.prepare("SELECT content FROM posts WHERE slug = 'tiktik'").get().content; 605 assert.ok(tik.includes('href="/tiktik#track-t1"'), `fragment blijft heel, kreeg: ${tik}`); 606 assert.ok(tik.includes('href="/tiktik?fc=2"'), 'en de querystring ook'); 607 assert.ok(!tik.includes('oud.example'), 'er wijst niets meer naar de oude site'); 608 const ander = db.prepare("SELECT content FROM posts WHERE slug = 'ander'").get().content; 609 assert.ok(ander.includes(`${OUD}/bestaat-hier-niet`), 610 'een link naar iets dat hier niet bestaat blijft staan: beter de oude site dan een 404 op de nieuwe'); 611 assert.equal(r.linksBijgetrokken, 1); 612 }); 613 579 614 test('een bericht dat je zelf hebt verwijderd komt bij een tweede ronde terug', async () => { 580 615 // Robin: "ik kan handmatig deze keer de posts verwijderen en opnieuw ophalen."
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)