Changeset ea3e722 in Klonkt for test/music-uitgave.test.js


Ignore:
Timestamp:
08/09/2026 08:34:57 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
5ae4d61
Parents:
d60c498
Message:

Een hashtag hoort te staan zoals hij geschreven is (Robins punt, 9-8)

Stond een tag zowel in het tagveld als in het lijf van de post, dan won de vorm
uit het veld. Die gaat door tagParts, want een hashtag mag geen spaties
bevatten en "Doen we Niet" wordt daar #DoenWeNiet van. Nodig voor een tag die
alleen in het veld staat -- maar als iemand in zijn tekst #DoenweNiet heeft
getypt is dat geen benadering meer maar de tag zelf, en die verdween als
duplicaat van de genormaliseerde vorm.

Nu gaat het lijf voor: de geschreven vorm wint, en het tagveld vult aan wat er
niet staat. De slug in de href blijft kleingeschreven -- dat is een adres, geen
naam.

En de uitgave-collectie gebruikt nu diezelfde lijst in plaats van een eigen: ze
miste de tags uit de tekst helemaal, en spelde de rest anders dan dezelfde post
elders deed. buildHashtagList en hashtagTags zijn daarvoor van
ActivityPubService naar ap-core verhuisd, want music/ mag daar niet uit
importeren.

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

File:
1 edited

Legend:

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

    rd60c498 rea3e722  
    7474  assert.equal(col.image.type, 'Image');
    7575  assert.equal(col.image.url, `${BASE}/media/hoes.jpg`);
    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.
     76  // Het tagveld is JSON in de database. Een tag van twee woorden wordt
     77  // CamelCase, want een hashtag mag geen spaties bevatten.
    7878  assert.deepEqual(col.tag.map((t) => t.name), ['#lofi', '#ZolderTapes']);
    7979  assert.equal(col.tag[1].href, `${BASE}/tag/zoldertapes`);
     
    196196  assert.equal(M.buildPostTrackCollection(BASE, site, p).content, 'Opgenomen in de schuur.');
    197197});
     198
     199test('een hashtag uit het LIJF staat zoals hij geschreven is', () => {
     200  // Robins punt (9-8): #DoenweNiet in de tekst hoort #DoenweNiet te blijven.
     201  // Eerder won de vorm uit het tagveld -- tagParts maakt daar #DoenWeNiet van --
     202  // en verdween de geschreven vorm als duplicaat.
     203  const p = maakPost({
     204    id: 'p-schrijf', slug: 'zoals-geschreven', titel: 'Zoals geschreven',
     205    content: '<p>Zie <a class="hashtag" href="/tag/doenweniet">#DoenweNiet</a></p>[[track:t-een]]',
     206    tags: '["Doen we Niet","lofi"]',
     207  });
     208  const col = M.buildPostTrackCollection(BASE, site, p);
     209  const namen = col.tag.map((t) => t.name);
     210  assert.ok(namen.includes('#DoenweNiet'), 'de geschreven vorm wint');
     211  assert.ok(!namen.includes('#DoenWeNiet'), 'en de genormaliseerde staat er niet naast');
     212  assert.ok(namen.includes('#lofi'), 'tags die alleen in het veld staan blijven');
     213  assert.equal(col.tag[0].href, `${BASE}/tag/doenweniet`, 'de slug blijft wel klein: dat is een adres');
     214});
Note: See TracChangeset for help on using the changeset viewer.