- Timestamp:
- 08/14/2026 12:03:55 AM (4 weeks ago)
- Branches:
- main
- Children:
- eb071a7
- Parents:
- 9529d7b
- File:
-
- 1 edited
-
test/archive-audio.test.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
test/archive-audio.test.js
r9529d7b r98acb97 188 188 }); 189 189 190 191 test('de hoes van een nummer reist mee als BESTAND, niet als losse verwijzing', () => { 192 // Robin na de tweede ronde: "de audio tracks hadden images, die zijn niet 193 // meegegaan". cover_url ging wel mee als string en het bestand niet, dus kwam 194 // een nummer aan met een verwijzing naar een plaatje dat er niet was. 195 // Dezelfde fout als bij de audio zelf, een laag hoger. 196 leeg(); 197 const hoesDir = path.join(MEDIA, 'hoes'); 198 fs.mkdirSync(hoesDir, { recursive: true }); 199 const PNG = Buffer.from('nep-png-bytes'); 200 fs.writeFileSync(path.join(hoesDir, 'a.png'), PNG); 201 track('h1', 'Met hoes'); 202 db.prepare("UPDATE audio_tracks SET cover_url = '/media/hoes/a.png' WHERE id = 'h1'").run(); 203 db.prepare("INSERT INTO playlists (id, site_id, title, cover_url) VALUES ('plh','s1','Plaat','/media/hoes/a.png')").run(); 204 db.prepare("INSERT INTO playlist_tracks (playlist_id, track_id, position) VALUES ('plh','h1',0)").run(); 205 206 const uit = AX.buildArchive('me'); 207 const rij = JSON.parse(uit.files.get('tracks.json').toString('utf8')).orderedItems[0]; 208 assert.ok(rij['shaer:coverFile'], 'de hoes hoort een plek in het archief te hebben'); 209 assert.deepEqual(uit.files.get(rij['shaer:coverFile']), PNG, 'met de echte bytes erin'); 210 const pl = JSON.parse(uit.files.get('playlists.json').toString('utf8')).orderedItems[0]; 211 assert.ok(pl['shaer:coverFile'], 'en de hoes van de plaat ook'); 212 213 leeg(); 214 AI.importArchive(uit.files, { slug: 'me', origin: 'https://nieuw.test' }); 215 const t = db.prepare("SELECT cover_url FROM audio_tracks WHERE id = 'h1'").get(); 216 assert.ok(t.cover_url, 'na de import wijst het nummer naar een hoes'); 217 const opSchijf = path.join(MEDIA, t.cover_url.replace(/^\/media\//, '')); 218 assert.deepEqual(fs.readFileSync(opSchijf), PNG, 'en die staat er ook echt'); 219 }); 220 221 test('een hoes die niet in het archief zit levert GEEN kapotte verwijzing op', () => { 222 // Liever geen hoes dan een <img> die 404't. Dezelfde regel als bij de tracks. 223 leeg(); 224 track('h2', 'Hoes zoek'); 225 db.prepare("UPDATE audio_tracks SET cover_url = '/media/bestaat/niet.png' WHERE id = 'h2'").run(); 226 const uit = AX.buildArchive('me'); 227 const rij = JSON.parse(uit.files.get('tracks.json').toString('utf8')).orderedItems[0]; 228 assert.equal(rij['shaer:coverFile'], undefined); 229 230 leeg(); 231 AI.importArchive(uit.files, { slug: 'me', origin: 'https://nieuw.test' }); 232 assert.equal(db.prepare("SELECT cover_url FROM audio_tracks WHERE id = 'h2'").get().cover_url, null, 233 'geen verwijzing naar een plaatje dat er niet is'); 234 }); 235 190 236 test.after(() => { try { fs.rmSync(TMP, { recursive: true, force: true }); } catch { /* niets */ } });
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)