- Timestamp:
- 08/14/2026 12:12:58 AM (4 weeks ago)
- Branches:
- main
- Children:
- 919b82d
- Parents:
- 98acb97
- File:
-
- 1 edited
-
test/fep1580-migration.test.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
test/fep1580-migration.test.js
r98acb97 reb071a7 398 398 }); 399 399 400 test('een tweede ronde VULT AAN en slaat niet over', async () => { 401 // De val die Robin bijna in liep: de eerste versie van de ingest onthield per 402 // bron-URI "al gehad" en passeerde die daarna altijd. Kwam er later iets bij 403 // (hoezen, duur, playlists), dan kon je opnieuw drukken zoveel je wilde en 404 // gebeurde er niets. Opruimen hielp ook niet, want ap_migration hield de 405 // blokkade in stand. Dus: aanvullen, niet overslaan. 406 const s = site({ aliases: [BRON] }); 407 const AUDIO = `${BRON}/audio/x.mp3`; 408 const HOES = `${BRON}/media/hoes.png`; 409 const maakKaart = (metHoes) => new Map([ 410 [BRON, { id: BRON, type: 'Person', movedTo: IK, outbox: `${BRON}/outbox`, streams: [`${BRON}/tracks`] }], 411 [`${BRON}/outbox`, { type: 'OrderedCollection', orderedItems: [] }], 412 [`${BRON}/tracks`, { 413 type: 'OrderedCollection', 414 orderedItems: [{ 415 id: `${BRON}/tracks/t1`, type: 'Audio', name: 'Nummer', summary: 'Robo', duration: 'PT212S', 416 url: [{ type: 'Link', href: AUDIO, mediaType: 'audio/mpeg' }], 417 ...(metHoes ? { icon: { type: 'Image', url: HOES } } : {}), 418 }], 419 }], 420 ]); 421 const gehaald = []; 422 const deps = (metHoes) => ({ 423 getJson: async (_slug, url) => maakKaart(metHoes).get(url) || null, 424 noteId: (b, id) => `${b}/ap/notes/${id}`, 425 noteVisibility: AP.noteVisibility, 426 audioRoot: '/nep/audio', mediaRoot: '/nep/media', 427 signHeaders: () => ({ Signature: 'nep' }), 428 safeFetch: async (url) => { 429 gehaald.push(url); 430 return { ok: true, arrayBuffer: async () => Buffer.from('x'), headers: { get: () => 'audio/mpeg' } }; 431 }, 432 fs: { mkdirSync() {}, writeFileSync() {} }, 433 path, 434 }); 435 436 // Ronde 1: zonder hoes, zoals de eerste uitrol. 437 const r1 = await stil(() => Mig.ingestFromSource(s, { deps: deps(false) })); 438 assert.equal(r1.tracksBinnen, 1); 439 const na1 = db.prepare('SELECT id, cover_url, duration FROM audio_tracks').get(); 440 assert.equal(na1.cover_url, null); 441 assert.equal(na1.duration, 212, 'PT212S hoort 212 seconden te worden'); 442 443 // Ronde 2: nu MET hoes. Hij moet aanvullen, niet passeren en niet verdubbelen. 444 const voor = gehaald.length; 445 const r2 = await stil(() => Mig.ingestFromSource(s, { deps: deps(true) })); 446 assert.equal(r2.tracksBinnen, 0, 'er komt niets nieuws bij'); 447 assert.equal(r2.tracksBijgewerkt, 1, 'maar het bestaande nummer wordt wel aangevuld'); 448 assert.equal(db.prepare('SELECT COUNT(*) n FROM audio_tracks').get().n, 1, 'geen dubbele'); 449 const na2 = db.prepare('SELECT id, cover_url FROM audio_tracks').get(); 450 assert.equal(na2.id, na1.id, 'dezelfde rij, niet een nieuwe'); 451 assert.ok(na2.cover_url, 'en de hoes is er nu wel'); 452 assert.ok(!gehaald.slice(voor).includes(AUDIO), 'het geluidsbestand wordt NIET opnieuw gedownload'); 453 454 // Ronde 3: alles compleet, dus er valt niets meer aan te vullen. 455 const r3 = await stil(() => Mig.ingestFromSource(s, { deps: deps(true) })); 456 assert.equal(r3.tracksBijgewerkt, 0); 457 assert.equal(r3.overgeslagenTracks, 1); 458 }); 459 400 460 test('een niet-publiek bericht komt wel mee maar niet in de publieke tabel', async () => { 401 461 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)