« get me outta code hell

transformContent.js « snapshot « test - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/test/snapshot/transformContent.js
blob: b05beac1316c710db71074a1c613649f6cc04ca0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import t from 'tap';
import {testContentFunctions} from '#test-lib';

testContentFunctions(t, 'transformContent (snapshot)', async (t, evaluate) => {
  await evaluate.load({
    mock: {
      image: evaluate.stubContentFunction('image'),
    },
  });

  const extraDependencies = {
    wikiData: {
      albumData: [
        {directory: 'cool-album', name: 'Cool Album', color: '#123456'},
      ],
    },

    to: (key, ...args) => `to-${key}/${args.join('/')}`,
  };

  const quickSnapshot = (message, content, slots) =>
    evaluate.snapshot(message, {
      name: 'transformContent',
      args: [content],
      extraDependencies,
      slots,
    });

  quickSnapshot(
    'two text paragraphs',
      `Hello, world!\n` +
      `Wow, this is very cool.`);

  quickSnapshot(
    'links to a thing',
      `This is [[album:cool-album|my favorite album]].\n` +
      `That's right, [[album:cool-album]]!`);

  quickSnapshot(
    'inline images',
      `<img src="snooping.png"> as USUAL...\n` +
      `What do you know? <img src="cowabunga.png" width="24" height="32">\n` +
      `[[album:cool-album|I'm on the left.]]<img src="im-on-the-right.jpg">\n` +
      `<img src="im-on-the-left.jpg">[[album:cool-album|I'm on the right.]]\n` +
      `Media time! <img src="media/misc/interesting.png"> Oh yeah!\n` +
      `<img src="must.png"><img src="stick.png"><img src="together.png">\n` +
      `And... all done! <img src="end-of-source.png">`);

  quickSnapshot(
    'non-inline image #1',
      `<img src="spark.png">`);

  quickSnapshot(
    'non-inline image #2',
      `Rad.\n` +
      `<img src="spark.png">`);

  quickSnapshot(
    'non-inline image #3',
      `<img src="spark.png">\n` +
      `Baller.`);

  quickSnapshot(
    'dates',
      `[[date:2023-04-13]] Yep!\n` +
      `Very nice: [[date:25 October 2413]]`);

  quickSnapshot(
    'super basic string',
      `Neat listing: [[string:listingPage.listAlbums.byDate.title]]`);

  quickSnapshot(
    'lyrics - basic line breaks',
      `Hey, ho\n` +
      `And away we go\n` +
      `Truly, music\n` +
      `\n` +
      `(Oh yeah)\n` +
      `(That's right)`,
      {mode: 'lyrics'});

  quickSnapshot(
    'lyrics - repeated and edge line breaks',
      `\n\nWell, you know\nHow it goes\n\n\nYessiree\n\n\n`,
      {mode: 'lyrics'});

  quickSnapshot(
    'lyrics - line breaks around tags',
      `The date be [[date:13 April 2004]]\n` +
      `I say, the date be [[date:13 April 2004]]\n` +
      `[[date:13 April 2004]]\n` +
      `[[date:13 April 2004]][[date:13 April 2004]][[date:13 April 2004]]\n` +
      `(Aye!)\n` +
      `\n` +
      `[[date:13 April 2004]]\n` +
      `[[date:13 April 2004]][[date:13 April 2004]]\n` +
      `[[date:13 April 2004]]\n` +
      `\n` +
      `[[date:13 April 2004]]\n` +
      `[[date:13 April 2004]], and don't ye forget it`,
      {mode: 'lyrics'});

  // TODO: Snapshots for mode: inline
  // TODO: Snapshots for mode: single-link
});