« get me outta code hell

image.js « snapshot « test - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/test/snapshot/image.js
blob: 447e7fa7e0d7dc95c44c687b29243b71b760d2fa (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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import t from 'tap';
import {testContentFunctions} from '#test-lib';

testContentFunctions(t, 'image (snapshot)', async (t, evaluate) => {
  await evaluate.load();

  const quickSnapshot = (message, {extraDependencies, ...opts}) =>
    evaluate.snapshot(message, {
      name: 'image',
      extraDependencies: {
        checkIfImagePathHasCachedThumbnails: path => !path.endsWith('.gif'),
        getSizeOfImagePath: () => 0,
        getDimensionsOfImagePath: () => [600, 600],
        getThumbnailEqualOrSmaller: () => 'medium',
        getThumbnailsAvailableForDimensions: () =>
          [['large', 800], ['medium', 400], ['small', 250]],
        missingImagePaths: ['album-art/missing/cover.png'],
        ...extraDependencies,
      },
      ...opts,
    });

  quickSnapshot('source via path', {
    slots: {
      path: ['media.albumCover', 'beyond-canon', 'png'],
    },
  });

  quickSnapshot('source via src', {
    slots: {
      src: 'https://example.com/bananas.gif',
    },
  });

  quickSnapshot('source missing', {
    slots: {
      missingSourceContent: 'Example of missing source message.',
    },
  });

  quickSnapshot('width & height', {
    slots: {
      src: 'foobar',
      width: 600,
      height: 400,
    },
  });

  quickSnapshot('square', {
    slots: {
      src: 'foobar',
      square: true,
    },
  });

  quickSnapshot('lazy with square', {
    slots: {
      src: 'foobar',
      lazy: true,
      square: true,
    },
  });

  quickSnapshot('link with file size', {
    extraDependencies: {
      getSizeOfImagePath: () => 10 ** 6,
    },
    slots: {
      path: ['media.albumCover', 'pingas', 'png'],
      link: true,
    },
  });

  quickSnapshot('content warnings via tags', {
    args: [
      [
        {name: 'Dirk Strider', directory: 'dirk'},
        {name: 'too cool for school', isContentWarning: true},
      ],
    ],
    slots: {
      path: ['media.albumCover', 'beyond-canon', 'png'],
    },
  });

  evaluate.snapshot('thumbnail details', {
    name: 'image',
    extraDependencies: {
      checkIfImagePathHasCachedThumbnails: () => true,
      getSizeOfImagePath: () => 0,
      getDimensionsOfImagePath: () => [900, 1200],
      getThumbnailsAvailableForDimensions: () =>
        [['voluminous', 1200], ['middling', 900], ['petite', 20]],
      getThumbnailEqualOrSmaller: () => 'voluminous',
      missingImagePaths: [],
    },
    slots: {
      thumb: 'gargantuan',
      path: ['media.albumCover', 'beyond-canon', 'png'],
    },
  });

  quickSnapshot('thumb requested but source is gif', {
    slots: {
      thumb: 'medium',
      path: ['media.flashArt', '5426', 'gif'],
    },
  });

  quickSnapshot('missing image path', {
    slots: {
      thumb: 'medium',
      path: ['media.albumCover', 'missing', 'png'],
      link: true,
    },
  });

  quickSnapshot('missing image path w/ missingSourceContent', {
    slots: {
      thumb: 'medium',
      path: ['media.albumCover', 'missing', 'png'],
      missingSourceContent: `Cover's missing, whoops`,
    },
  });
});