Changeset 919b82d in Klonkt for test/fep1580-migration.test.js
- Timestamp:
- 08/14/2026 12:29:06 AM (4 weeks ago)
- Branches:
- main
- Children:
- 19430fa, 2365630
- Parents:
- eb071a7
- File:
-
- 1 edited
-
test/fep1580-migration.test.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
test/fep1580-migration.test.js
reb071a7 r919b82d 458 458 }); 459 459 460 test('een bericht dat je zelf hebt verwijderd komt bij een tweede ronde terug', async () => { 461 // Robin: "ik kan handmatig deze keer de posts verwijderen en opnieuw ophalen." 462 // Met de eerste opzet kon dat niet: de mapping in ap_migration zei "al gehad" 463 // en dan werd alles overgeslagen, hoe leeg je site ook was. Dezelfde val als 464 // bij de nummers, en juist deze zou hij als eerste tegenkomen. 465 const s = site({ aliases: [BRON] }); 466 const deps = bronnetje({ items: [note(`${BRON}/notes/1`), note(`${BRON}/notes/2`)] }); 467 468 const r1 = await stil(() => Mig.ingestFromSource(s, { deps })); 469 assert.equal(r1.posts, 2); 470 471 // Eentje weg, de mapping blijft staan. 472 const weg = db.prepare('SELECT id FROM posts LIMIT 1').get().id; 473 db.prepare('DELETE FROM posts WHERE id = ?').run(weg); 474 assert.equal(db.prepare('SELECT COUNT(*) n FROM posts').get().n, 1); 475 476 const r2 = await stil(() => Mig.ingestFromSource(s, { deps })); 477 assert.equal(r2.posts, 1, 'het verwijderde bericht hoort terug te komen'); 478 assert.equal(r2.opnieuw, 1, 'en het verslag zegt dat het opnieuw is opgehaald'); 479 assert.equal(r2.overgeslagen, 1, 'terwijl het bericht dat er nog stond met rust blijft'); 480 assert.equal(db.prepare('SELECT COUNT(*) n FROM posts').get().n, 2, 'geen dubbele'); 481 }); 482 483 test('de [[track:]]-verwijzing in een bericht wordt bijgetrokken', async () => { 484 // Wat Robin op TikTik zag: het bericht toonde de shorthand zelf in plaats van 485 // een speler. Zijn posts kwamen uit de ZIP (die bewaart posts.content 486 // letterlijk, inclusief [[track:<oud id>]]) en zijn nummers uit de PULL (die 487 // gaf ze een nieuw id). De tekst wees dus naar een nummer dat hier niet 488 // bestaat, en dan valt hij terug op de kale code. 489 const s = site({ aliases: [BRON] }); 490 db.prepare(`INSERT INTO posts (id, site_id, author_id, slug, title, content, status, published_at) 491 VALUES ('pz','s1','u1','tiktik','TikTik','<p>[[track:t-oud]]</p>','published','2026-08-13T10:00:00Z')`).run(); 492 493 const kaart = new Map([ 494 [BRON, { id: BRON, type: 'Person', movedTo: IK, outbox: `${BRON}/outbox`, streams: [`${BRON}/tracks`] }], 495 [`${BRON}/outbox`, { type: 'OrderedCollection', orderedItems: [] }], 496 [`${BRON}/tracks`, { 497 type: 'OrderedCollection', 498 orderedItems: [{ 499 id: `${BRON}/tracks/t-oud`, type: 'Audio', name: 'Nummer', 500 url: [{ type: 'Link', href: `${BRON}/audio/x.mp3`, mediaType: 'audio/mpeg' }], 501 }], 502 }], 503 ]); 504 await stil(() => Mig.ingestFromSource(s, { 505 deps: { 506 getJson: async (_slug, url) => kaart.get(url) || null, 507 noteId: (b, id) => `${b}/ap/notes/${id}`, 508 noteVisibility: AP.noteVisibility, 509 audioRoot: '/nep/audio', mediaRoot: '/nep/media', 510 signHeaders: () => ({ Signature: 'nep' }), 511 safeFetch: async () => ({ ok: true, arrayBuffer: async () => Buffer.from('x'), headers: { get: () => 'audio/mpeg' } }), 512 fs: { mkdirSync() {}, writeFileSync() {} }, 513 path, 514 }, 515 })); 516 517 const inhoud = db.prepare("SELECT content FROM posts WHERE id = 'pz'").get().content; 518 const m = /\[\[track:([^\]]+)\]\]/.exec(inhoud); 519 assert.ok(m, 'de shorthand blijft staan, alleen het id verandert'); 520 assert.notEqual(m[1], 't-oud', 'het oude id wijst hier nergens heen'); 521 const bestaat = db.prepare('SELECT 1 FROM audio_tracks WHERE id = ? AND site_id = ?').get(m[1], 's1'); 522 assert.ok(bestaat, 'en het nieuwe id hoort bij een nummer dat er echt is'); 523 }); 524 460 525 test('een niet-publiek bericht komt wel mee maar niet in de publieke tabel', async () => { 461 526 const s = site({ aliases: [BRON] });
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)