« get me outta code hell

generateAlbumAdditionalFilesList.js « snapshot « test - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/test/snapshot/generateAlbumAdditionalFilesList.js
blob: c25e5682331a8bff92f51c88b52f6ff87a0dec4c (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
import t from 'tap';

import {testContentFunctions} from '#test-lib';
import thingConstructors from '#things';

const {Album} = thingConstructors;

testContentFunctions(t, 'generateAlbumAdditionalFilesList (snapshot)', async (t, evaluate) => {
  const sizeMap = {
    'sburbwp_1280x1024.jpg': 2500,
    'sburbwp_1440x900.jpg': null,
    'sburbwp_1920x1080.jpg': null,
    'Internet Explorer.gif': 1,
    'Homestuck_Vol4_alt1.jpg': 1234567,
    'Homestuck_Vol4_alt2.jpg': 1234567,
    'Homestuck_Vol4_alt3.jpg': 1234567,
  };

  const extraDependencies = {
    getSizeOfAdditionalFile: file =>
      Object.entries(sizeMap)
        .find(key => file.includes(key))
        ?.at(1) ?? null,
  };

  await evaluate.load({
    mock: {
      image: evaluate.stubContentFunction('image'),
    },
  });

  const album = new Album();
  album.directory = 'exciting-album';

  evaluate.snapshot('no additional files', {
    extraDependencies,
    name: 'generateAlbumAdditionalFilesList',
    args: [album, []],
  });

  try {
    evaluate.snapshot('basic behavior', {
      extraDependencies,
      name: 'generateAlbumAdditionalFilesList',
      args: [
        album,
        [
          {
            title: 'SBURB Wallpaper',
            files: [
              'sburbwp_1280x1024.jpg',
              'sburbwp_1440x900.jpg',
              'sburbwp_1920x1080.jpg',
            ],
          },
          {
            title: 'Fake Section',
            description: 'No sizes for these files',
            files: [
              'oops.mp3',
              'Internet Explorer.gif',
              'daisy.mp3',
            ],
          },
          {
            title: `Empty Section`,
            description: `These files haven't been made available.`,
          },
          {
            title: 'Alternate Covers',
            description: 'This is just an example description.',
            files: [
              'Homestuck_Vol4_alt1.jpg',
              'Homestuck_Vol4_alt2.jpg',
              'Homestuck_Vol4_alt3.jpg',
            ],
          },
        ],
      ],
    });
  } catch (error) {
    console.log(error);
  }
});