Changeset 0677bac in Klonkt for test/music-uitgave.test.js


Ignore:
Timestamp:
08/09/2026 08:24:16 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
d60c498
Parents:
a5d14c7
Message:

De tags kwamen er als onzin uit, en de tekst helemaal niet (shaer-38y)

Live nagekeken op dev, en twee dingen klopten niet.

DE TAGS. posts.tags staat als JSON-ARRAY in de database, niet als kommalijst.
Mijn eigen split leverde #["Doen we Niet" en #"music" op -- geen fout die
omvalt, een die onzin uitlevert. Nu met normalizeTags en tagParts, dezelfde
parser als de rest, dus ook dezelfde CamelCase voor tags van meerdere woorden.

Die twee stonden in ActivityPubService en music/ mag daar niet uit importeren,
dus ze zijn naar ap-core verhuisd -- de plek voor precies dit soort gedeelde
grondstof. Een kopie maken zou hetzelfde uit elkaar lopen opleveren als bij de
afleidingsregel.

DE TEKST. De excerpt bleek in de praktijk vaak leeg, en dan kwam er geen
content mee terwijl de post wel tekst heeft. Nu: excerpt eerst -- die is
geschreven om samen te vatten -- en anders het lijf zelf, zonder shortcodes
(die zijn de muziek, niet het verhaal erover) en zonder opmaak. Blijft er niets
over, dan geen veld: dat is beter dan een leeg veld.

De test gebruikte de kommavorm en testte dus de terugval in plaats van de echte
weg. Nu JSON, zoals het er staat.

Co-Authored-By: Claude Opus 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/music-uitgave.test.js

    ra5d14c7 r0677bac  
    5151  excerpt: 'Opgenomen op zolder, in een week.',
    5252  cover: '/media/hoes.jpg',
    53   tags: 'lofi, zolder',
     53  tags: '["lofi","zolder tapes"]',
    5454});
    5555
     
    7474  assert.equal(col.image.type, 'Image');
    7575  assert.equal(col.image.url, `${BASE}/media/hoes.jpg`);
    76   assert.deepEqual(col.tag.map((t) => t.name), ['#lofi', '#zolder']);
     76  // Het tagveld is JSON in de database, en een tag van twee woorden wordt
     77  // CamelCase -- zelfde regel als elders, want het is nu dezelfde parser.
     78  assert.deepEqual(col.tag.map((t) => t.name), ['#lofi', '#ZolderTapes']);
     79  assert.equal(col.tag[1].href, `${BASE}/tag/zoldertapes`);
    7780  assert.equal(col.url, `${BASE}/drie-nieuwe`);
    7881  assert.equal(col.context, `${BASE}/ap/notes/p-los`);
     
    153156  assert.equal(M.uitgavePost(SITE, 'tweede'), null);
    154157});
     158
     159test('zonder excerpt leent hij de tekst uit het lijf van de post', () => {
     160  // Live bleek de excerpt vaak leeg; dan is `content` weglaten slechter dan de
     161  // tekst zelf pakken. Shortcodes gaan eruit -- die zijn de muziek, niet het
     162  // verhaal erover.
     163  const p = maakPost({
     164    id: 'p-tekst', slug: 'zonder-excerpt', titel: 'Zonder excerpt',
     165    content: '<p>Drie schetsen van vorige week.</p>[[track:t-een]]<div>&nbsp;</div>',
     166  });
     167  const col = M.buildPostTrackCollection(BASE, site, p);
     168  assert.equal(col.content, 'Drie schetsen van vorige week.');
     169});
     170
     171test('en een post die alleen uit shortcodes bestaat leent geen lege tekst', () => {
     172  const p = maakPost({
     173    id: 'p-kaal', slug: 'alleen-muziek', titel: 'Alleen muziek',
     174    content: '[[track:t-twee]]<div> </div>',
     175  });
     176  const col = M.buildPostTrackCollection(BASE, site, p);
     177  assert.equal(col.content, undefined, 'een leeg veld is slechter dan geen veld');
     178});
Note: See TracChangeset for help on using the changeset viewer.