From d31c889df346b7579ce1afe0746fb4aa0ed8227d Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 14 Feb 2024 13:07:09 -0400 Subject: content, external-links, test: provide album track count as context --- .../dependencies/generateAlbumReleaseInfo.js | 11 ++++- src/util/external-links.js | 7 ++- .../test/snapshot/linkExternal.js.test.cjs | 56 +++++++++++++++++++++- test/snapshot/linkExternal.js | 18 +++++++ 4 files changed, 88 insertions(+), 4 deletions(-) diff --git a/src/content/dependencies/generateAlbumReleaseInfo.js b/src/content/dependencies/generateAlbumReleaseInfo.js index cb3aaa75..5128fbac 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 14ee10a5..2cf23c61 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 1327ba02..1c1f35f4 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`] = ` +YouTube +YouTube +YouTube +` + +exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: album, style: platform 1`] = ` +YouTube +YouTube +YouTube +` + +exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumMultipleTracks, style: compact 1`] = ` +youtu.be +youtube.com +youtube.com +` + +exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumMultipleTracks, style: normal 1`] = ` YouTube (full album) YouTube (full album) YouTube ` -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`] = ` +YouTube +YouTube +YouTube +` + +exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumNoTracks, style: compact 1`] = ` +youtu.be +youtube.com +youtube.com +` + +exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumNoTracks, style: normal 1`] = ` +YouTube +YouTube +YouTube +` + +exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumNoTracks, style: platform 1`] = ` +YouTube +YouTube +YouTube +` + +exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumOneTrack, style: compact 1`] = ` +youtu.be +youtube.com +youtube.com +` + +exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumOneTrack, style: normal 1`] = ` +YouTube +YouTube +YouTube +` + +exports[`test/snapshot/linkExternal.js > TAP > linkExternal (snapshot) > context: albumOneTrack, style: platform 1`] = ` YouTube YouTube YouTube diff --git a/test/snapshot/linkExternal.js b/test/snapshot/linkExternal.js index 92cb8947..f4138630 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', -- cgit 1.3.0-6-gf8a5