« get me outta code hell

test: generateAlbumTrackList (snapshot, unit) - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/test
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-06-24 17:41:24 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-06-24 17:41:24 -0300
commit324b74cef03ca5f21e938ed3bb9a43e564b377fa (patch)
tree9746b8d31739a379dd7a49effb06e09c3b9bd8a5 /test
parent47d504251c084e601b946866e572519b2612b13c (diff)
test: generateAlbumTrackList (snapshot, unit)
Diffstat (limited to 'test')
-rw-r--r--test/snapshot/generateAlbumTrackList.js41
-rw-r--r--test/unit/content/dependencies/generateAlbumTrackList.js40
2 files changed, 81 insertions, 0 deletions
diff --git a/test/snapshot/generateAlbumTrackList.js b/test/snapshot/generateAlbumTrackList.js
new file mode 100644
index 0000000..055f189
--- /dev/null
+++ b/test/snapshot/generateAlbumTrackList.js
@@ -0,0 +1,41 @@
+import t from 'tap';
+import {testContentFunctions} from '../lib/content-function.js';
+
+testContentFunctions(t, 'generateAlbumTrackList (snapshot)', async (t, evaluate) => {
+  await evaluate.load({
+    mock: {
+      generateAlbumTrackListItem: {
+        extraDependencies: ['html'],
+        data: track => track.name,
+        generate: (name, {html}) =>
+          html.tag('li', `Item: ${name}`),
+      },
+    },
+  });
+
+  const tracks = [
+    {name: 'Track 1', duration: 20},
+    {name: 'Track 2', duration: 30},
+    {name: 'Track 3', duration: 40},
+    {name: 'Track 4', duration: 5},
+  ];
+
+  evaluate.snapshot('basic behavior, with track sections', {
+    name: 'generateAlbumTrackList',
+    args: [{
+      trackSections: [
+        {name: 'First section', tracks: tracks.slice(0, 3)},
+        {name: 'Second section', tracks: tracks.slice(3)},
+      ],
+      tracks,
+    }],
+  });
+
+  evaluate.snapshot('basic behavior, default track section', {
+    name: 'generateAlbumTrackList',
+    args: [{
+      trackSections: [{isDefaultTrackSection: true, tracks}],
+      tracks,
+    }],
+  });
+});
diff --git a/test/unit/content/dependencies/generateAlbumTrackList.js b/test/unit/content/dependencies/generateAlbumTrackList.js
new file mode 100644
index 0000000..80b086c
--- /dev/null
+++ b/test/unit/content/dependencies/generateAlbumTrackList.js
@@ -0,0 +1,40 @@
+import t from 'tap';
+import {testContentFunctions} from '../../../lib/content-function.js';
+
+testContentFunctions(t, 'generateAlbumTrackList (unit)', async (t, evaluate) => {
+  await evaluate.load({
+    mock: {
+      generateAlbumTrackListItem: {
+        extraDependencies: ['html'],
+        data: track => track.name,
+        generate: (name, {html}) =>
+          html.tag('li', `Item: ${name}`),
+      },
+    },
+  });
+
+  let readDuration = false;
+
+  const track = (name, duration) => ({
+    name,
+    get duration() {
+      readDuration = true;
+      return duration;
+    },
+  });
+
+  const tracks = [
+    track('Track 1', 30),
+    track('Track 2', 15),
+  ];
+
+  evaluate({
+    name: 'generateAlbumTrackList',
+    args: [{
+      trackSections: [{isDefaultTrackSection: true, tracks}],
+      tracks,
+    }],
+  });
+
+  t.notOk(readDuration, 'expect no access to track.duration property');
+});