- Timestamp:
- 08/16/2026 02:25:04 PM (3 weeks ago)
- Branches:
- main
- Children:
- 749605a
- Parents:
- 7090fd2
- File:
-
- 1 edited
-
test/ap-fw-track.test.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
test/ap-fw-track.test.js
r7090fd2 r9026de5 204 204 assert.equal(col.artist_credit, undefined); 205 205 }); 206 207 test('published EN released lenen de datum van de uitgavepost', () => { 208 // De post is het moment van uitbrengen. Geen datum is slechter dan een datum 209 // die op het gewone geval klopt; voor een heruitgave vul je het veld in. 210 db.prepare(`INSERT INTO posts (id, site_id, author_id, slug, title, content, status, published_at) 211 VALUES ('p-uit','s1','u1','de-plaat-uit','De Plaat Is Er','<p>[[playlist:de-plaat]]</p>','published','2026-05-04T12:00:00Z')`).run(); 212 // De fixture zette hierboven al een release_date; die wint terecht, dus voor 213 // DEZE test moet hij weg. (Dat de eerste versie hier omviel is het bewijs dat 214 // de voorrang werkt.) 215 db.prepare("UPDATE playlists SET release_date = NULL WHERE id = 'de-plaat'").run(); 216 const al = audio('t1').track.album; 217 assert.equal(al.published, '2026-05-04T12:00:00.000Z'); 218 assert.equal(al.released, '2026-05-04', 'released is een DAG, geen tijdstip'); 219 }); 220 221 test('een ingevulde uitgavedatum wint van de postdatum', () => { 222 // Dit is het geval waarvoor het veld bestaat: oud werk dat je vandaag post. 223 db.prepare("UPDATE playlists SET release_date = '2018-09-01' WHERE id = 'de-plaat'").run(); 224 const al = audio('t1').track.album; 225 assert.equal(al.released, '2018-09-01', 'de postdatum overschreef het ingevulde veld'); 226 db.prepare("UPDATE playlists SET release_date = NULL WHERE id = 'de-plaat'").run(); 227 }); 228 229 test('geen post en geen veld: dan geen released', () => { 230 // Afwezig is afwezig -- we leiden af waar er iets af te leiden valt, en 231 // verzinnen niets waar dat niet zo is. 232 db.prepare("INSERT INTO playlists (id, site_id, title, kind) VALUES ('kaal','s1','Kale Plaat','album')").run(); 233 db.prepare("INSERT INTO playlist_tracks (playlist_id, track_id, position) VALUES ('kaal','t9',1)").run(); 234 const al = audio('t9').track.album; 235 assert.equal(al.name, 'Kale Plaat'); 236 assert.equal(al.released, undefined); 237 }); 238 239 test('een GEPLANDE post: de geplande dag telt, niet wanneer de worker draaide', () => { 240 // Robins vraag (16-8). Drie schakels moeten kloppen: 241 // 242 // 1. zolang de post 'scheduled' is vindt uitgavePost hem NIET (die filtert 243 // op status='published'), dus de plaat heeft nog geen uitgavedatum -- 244 // hij is immers nog niet uit; 245 // 2. de Scheduler zet published_at op COALESCE(published_at, publish_at, 246 // CURRENT_TIMESTAMP), dus op de GEPLANDE tijd; 247 // 3. wij lezen COALESCE(published_at, created_at) en komen daar dus op uit. 248 // 249 // Dat derde punt is waarom created_at hier nooit wint: bij een gepubliceerde 250 // post staat published_at altijd gevuld. En punt 2 is waarom een server die 251 // een uur plat lag geen uur te late uitgavedatum oplevert. 252 db.prepare("INSERT INTO playlists (id, site_id, title, kind) VALUES ('gepland','s1','Geplande Plaat','album')").run(); 253 db.prepare("INSERT INTO playlist_tracks (playlist_id, track_id, position) VALUES ('gepland','t2',1)").run(); 254 db.prepare(`INSERT INTO posts (id, site_id, author_id, slug, title, content, status, publish_at, created_at, published_at) 255 VALUES ('p-gepland','s1','u1','komt-nog','Komt Nog','<p>[[playlist:gepland]]</p>','scheduled', 256 '2026-12-24T09:00:00Z','2026-06-01T08:00:00Z',NULL)`).run(); 257 258 // Nog gepland: geen datum, want de plaat is nog niet uit. 259 assert.equal(audio('t2').track.album.released, undefined, 'een geplande post bracht al iets uit'); 260 261 // De Scheduler doet zijn werk -- en draait expres LATER dan gepland. 262 db.prepare(`UPDATE posts SET status = 'published', 263 published_at = COALESCE(published_at, publish_at, CURRENT_TIMESTAMP) WHERE id = 'p-gepland'`).run(); 264 265 const al = audio('t2').track.album; 266 assert.equal(al.released, '2026-12-24', 'niet de geplande dag'); 267 assert.equal(al.published, '2026-12-24T09:00:00.000Z'); 268 assert.notEqual(al.released, '2026-06-01', 'de creatiedatum lekte door'); 269 });
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)