- Timestamp:
- 08/16/2026 01:29:11 PM (3 weeks ago)
- Branches:
- main
- Children:
- 21257e4
- Parents:
- 38d5e40
- File:
-
- 1 edited
-
test/ap-fw-track.test.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
test/ap-fw-track.test.js
r38d5e40 r9a585bf 84 84 for (const a of col.orderedItems) assert.equal(a.track.type, 'Track', `${a.name} zonder track`); 85 85 }); 86 87 // ── artist_credit (shaer-3f8a, het gat naar hun ingest) ────────────── 88 // 89 // TrackSerializer (regel 1569) eist `artist_credit` met min_length=1, en elke 90 // ArtistCredit eist een Artist die zelf id, name en published nodig heeft 91 // (MusicEntitySerializer, regel 1278). Dat leek onmogelijk zolang een artiest 92 // bij ons tekst was -- tot de MusicBrainz-koppeling liet zien dat de ACTOR de 93 // artiest is. 94 95 test('de track draagt een artist_credit met een echte Artist', () => { 96 const a = audio('t1'); 97 assert.ok(Array.isArray(a.track.artist_credit), 'geen lijst'); 98 assert.equal(a.track.artist_credit.length, 1); 99 const ac = a.track.artist_credit[0]; 100 assert.equal(ac.type, 'ArtistCredit'); 101 assert.ok(ac.id && ac.published, 'ArtistCredit mist id of published'); 102 assert.equal(ac.artist.type, 'Artist'); 103 assert.equal(ac.artist.id, `${BASE}/ap/users/band`, 'de actor IS de artiest'); 104 assert.equal(ac.artist.name, 'De Band'); 105 assert.ok(ac.artist.published, 'Artist mist published'); 106 }); 107 108 test('de artiestnaam van de track gaat naar credit, niet naar de entiteit', () => { 109 // De kolom is een credittekst, geen identiteit. Er een id van maken zou 110 // dezelfde fout zijn als bij het album (shaer-756s). 111 assert.equal(audio('t1').track.artist_credit[0].credit, 'De Band'); 112 assert.equal(audio('t2').track.artist_credit[0].credit, undefined, 'geen artiest, geen credit'); 113 }); 114 115 test('de track heeft published -- MusicEntitySerializer eist het', () => { 116 assert.ok(audio('t1').track.published); 117 }); 118 119 test('artist_credit is een @list in de context, anders vindt hun lezer niets', async () => { 120 // Ze lezen dit met first_attr(FW.artist_credit, "@list"). Zonder de 121 // container-declaratie expandeert onze array niet naar een @list en staat er 122 // iets dat er goed uitziet en niet gevonden wordt. 123 const core = await import('../src/services/ap-core.js'); 124 const term = core.AP_CONTEXT.find((x) => x && typeof x === 'object' && x.artist_credit); 125 assert.deepEqual(term.artist_credit, { '@id': 'fw:artist_credit', '@type': '@id', '@container': '@list' }); 126 assert.equal(term.ArtistCredit, 'fw:ArtistCredit'); 127 assert.equal(term.Artist, 'fw:Artist'); 128 }); 129 130 test('musicbrainzId komt mee zodra de site gekoppeld is', () => { 131 assert.equal(audio('t1').track.artist_credit[0].artist.musicbrainzId, undefined); 132 db.prepare("UPDATE sites SET mb_artist_id = '5441c29d-3602-4898-b1a1-b77fa23b8e50' WHERE id = 's1'").run(); 133 const s2 = db.prepare("SELECT * FROM sites WHERE id = 's1'").get(); 134 const a = AP.buildTrackAudio(BASE, s2, AP.openTrack('s1', 't1'), { hostPosts: null }); 135 assert.equal(a.track.artist_credit[0].artist.musicbrainzId, '5441c29d-3602-4898-b1a1-b77fa23b8e50'); 136 db.prepare("UPDATE sites SET mb_artist_id = NULL WHERE id = 's1'").run(); 137 });
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)