« get me outta code hell

content, external-links, test: provide album track count as context - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2024-02-14 13:07:09 -0400
committer(quasar) nebula <qznebula@protonmail.com>2024-02-14 13:44:36 -0400
commitd31c889df346b7579ce1afe0746fb4aa0ed8227d (patch)
tree8c98fb6c8d4c7d89e25968c99c0295aeac3880b5
parent08114ae53a4053b45577860f0a127ee2e6b3e3a6 (diff)
content, external-links, test: provide album track count as context
-rw-r--r--src/content/dependencies/generateAlbumReleaseInfo.js11
-rw-r--r--src/util/external-links.js7
-rw-r--r--tap-snapshots/test/snapshot/linkExternal.js.test.cjs56
-rw-r--r--test/snapshot/linkExternal.js18
4 files changed, 88 insertions, 4 deletions
diff --git a/src/content/dependencies/generateAlbumReleaseInfo.js b/src/content/dependencies/generateAlbumReleaseInfo.js
index cb3aaa7..5128fba 100644
--- a/src/content/dependencies/generateAlbumReleaseInfo.js
+++ b/src/content/dependencies/generateAlbumReleaseInfo.js
@@ -46,6 +46,8 @@ export default {
     data.duration = accumulateSum(album.tracks, track => track.duration);
     data.durationApproximate = album.tracks.length > 1;
 
+    data.numTracks = album.tracks.length;
+
     return data;
   },
 
@@ -95,7 +97,14 @@ export default {
                 relations.externalLinks
                   .map(link =>
                     link.slots({
-                      context: 'album',
+                      context: [
+                        'album',
+                        (data.numTracks === 0
+                          ? 'albumNoTracks'
+                       : data.numTracks === 1
+                          ? 'albumOneTrack'
+                          : 'albumMultipleTracks'),
+                      ],
                       style: 'normal',
                     }))),
           })),
diff --git a/src/util/external-links.js b/src/util/external-links.js
index 14ee10a..2cf23c6 100644
--- a/src/util/external-links.js
+++ b/src/util/external-links.js
@@ -24,6 +24,9 @@ export const isExternalLinkStyle = is(...externalLinkStyles);
 
 export const externalLinkContexts = [
   'album',
+  'albumOneTrack',
+  'albumMultipleTracks',
+  'albumNoTracks',
   'artist',
   'flash',
   'generic',
@@ -125,7 +128,7 @@ export const externalLinkSpec = [
 
   {
     match: {
-      context: 'album',
+      context: 'albumMultipleTracks',
       domain: 'youtube.com',
       pathname: /^watch/,
     },
@@ -138,7 +141,7 @@ export const externalLinkSpec = [
 
   {
     match: {
-      context: 'album',
+      context: 'albumMultipleTracks',
       domain: 'youtu.be',
     },
 
diff --git a/tap-snapshots/test/snapshot/linkExternal.js.test.cjs b/tap-snapshots/test/snapshot/linkExternal.js.test.cjs
index 1327ba0..1c1f35f 100644
--- a/tap-snapshots/test/snapshot/linkExternal.js.test.cjs
+++ b/tap-snapshots/test/snapshot/linkExternal.js.test.cjs
@@ -12,12 +12,66 @@ exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context
 `
 
 exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: album, style: normal 1`] = `
+<a href="https://youtu.be/abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/watch?v=abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/Playlist?list=kweh" class="nowrap">YouTube</a>
+`
+
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: album, style: platform 1`] = `
+<a href="https://youtu.be/abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/watch?v=abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/Playlist?list=kweh" class="nowrap">YouTube</a>
+`
+
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumMultipleTracks, style: compact 1`] = `
+<a href="https://youtu.be/abc" class="nowrap">youtu.be</a>
+<a href="https://youtube.com/watch?v=abc" class="nowrap">youtube.com</a>
+<a href="https://youtube.com/Playlist?list=kweh" class="nowrap">youtube.com</a>
+`
+
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumMultipleTracks, style: normal 1`] = `
 <a href="https://youtu.be/abc" class="nowrap">YouTube (full album)</a>
 <a href="https://youtube.com/watch?v=abc" class="nowrap">YouTube (full album)</a>
 <a href="https://youtube.com/Playlist?list=kweh" class="nowrap">YouTube</a>
 `
 
-exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: album, style: platform 1`] = `
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumMultipleTracks, style: platform 1`] = `
+<a href="https://youtu.be/abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/watch?v=abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/Playlist?list=kweh" class="nowrap">YouTube</a>
+`
+
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumNoTracks, style: compact 1`] = `
+<a href="https://youtu.be/abc" class="nowrap">youtu.be</a>
+<a href="https://youtube.com/watch?v=abc" class="nowrap">youtube.com</a>
+<a href="https://youtube.com/Playlist?list=kweh" class="nowrap">youtube.com</a>
+`
+
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumNoTracks, style: normal 1`] = `
+<a href="https://youtu.be/abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/watch?v=abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/Playlist?list=kweh" class="nowrap">YouTube</a>
+`
+
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumNoTracks, style: platform 1`] = `
+<a href="https://youtu.be/abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/watch?v=abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/Playlist?list=kweh" class="nowrap">YouTube</a>
+`
+
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumOneTrack, style: compact 1`] = `
+<a href="https://youtu.be/abc" class="nowrap">youtu.be</a>
+<a href="https://youtube.com/watch?v=abc" class="nowrap">youtube.com</a>
+<a href="https://youtube.com/Playlist?list=kweh" class="nowrap">youtube.com</a>
+`
+
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumOneTrack, style: normal 1`] = `
+<a href="https://youtu.be/abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/watch?v=abc" class="nowrap">YouTube</a>
+<a href="https://youtube.com/Playlist?list=kweh" class="nowrap">YouTube</a>
+`
+
+exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumOneTrack, style: platform 1`] = `
 <a href="https://youtu.be/abc" class="nowrap">YouTube</a>
 <a href="https://youtube.com/watch?v=abc" class="nowrap">YouTube</a>
 <a href="https://youtube.com/Playlist?list=kweh" class="nowrap">YouTube</a>
diff --git a/test/snapshot/linkExternal.js b/test/snapshot/linkExternal.js
index 92cb894..f413863 100644
--- a/test/snapshot/linkExternal.js
+++ b/test/snapshot/linkExternal.js
@@ -57,6 +57,24 @@ testContentFunctions(t, 'linkExternal (snapshot)', async (t, evaluate) => {
     'https://youtube.com/Playlist?list=kweh',
   ]);
 
+  quickSnapshotAllStyles('albumNoTracks', [
+    'https://youtu.be/abc',
+    'https://youtube.com/watch?v=abc',
+    'https://youtube.com/Playlist?list=kweh',
+  ]);
+
+  quickSnapshotAllStyles('albumOneTrack', [
+    'https://youtu.be/abc',
+    'https://youtube.com/watch?v=abc',
+    'https://youtube.com/Playlist?list=kweh',
+  ]);
+
+  quickSnapshotAllStyles('albumMultipleTracks', [
+    'https://youtu.be/abc',
+    'https://youtube.com/watch?v=abc',
+    'https://youtube.com/Playlist?list=kweh',
+  ]);
+
   quickSnapshotAllStyles('flash', [
     'https://www.bgreco.net/hsflash/002238.html',
     'https://homestuck.com/story/1234',