diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-02-06 22:04:13 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-02-10 13:31:06 -0400 |
commit | 5920fa888dd50ce577c1f9d8864b23231f84a34b (patch) | |
tree | 2687f1b51073b168f218dd3c7f99971f44746f17 | |
parent | 9155600700ef306715f4df6bc5f8afd57f707fb9 (diff) |
test: generateAlbumTrackList: collapseDurationScope snapshots
-rw-r--r-- | tap-snapshots/test/snapshot/generateAlbumTrackList.js.test.cjs | 112 | ||||
-rw-r--r-- | test/snapshot/generateAlbumTrackList.js | 96 |
2 files changed, 182 insertions, 26 deletions
diff --git a/tap-snapshots/test/snapshot/generateAlbumTrackList.js.test.cjs b/tap-snapshots/test/snapshot/generateAlbumTrackList.js.test.cjs index 46ea3b91..3b6676f8 100644 --- a/tap-snapshots/test/snapshot/generateAlbumTrackList.js.test.cjs +++ b/tap-snapshots/test/snapshot/generateAlbumTrackList.js.test.cjs @@ -8,23 +8,123 @@ exports[`test/snapshot/generateAlbumTrackList.js > TAP > generateAlbumTrackList (snapshot) > basic behavior, default track section 1`] = ` <ul> <li>(0:20) <a href="track/t1/">Track 1</a></li> - <li>(0:30) <a href="track/t2/">Track 2</a></li> + <li>[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t2/">Track 2</a></li> <li>(0:40) <a href="track/t3/">Track 3</a></li> - <li style="--primary-color: #ea2e83">(0:05) <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> + <li style="--primary-color: #ea2e83">[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> </ul> ` exports[`test/snapshot/generateAlbumTrackList.js > TAP > generateAlbumTrackList (snapshot) > basic behavior, with track sections 1`] = ` <dl class="album-group-list"> - <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">First section: (~1:30)</span></dt> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">First section: (~1:00)</span></dt> <dd> <ul> <li>(0:20) <a href="track/t1/">Track 1</a></li> - <li>(0:30) <a href="track/t2/">Track 2</a></li> + <li>[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t2/">Track 2</a></li> <li>(0:40) <a href="track/t3/">Track 3</a></li> </ul> </dd> - <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">Second section: (0:05)</span></dt> - <dd><ul><li style="--primary-color: #ea2e83">(0:05) <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li></ul></dd> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">Second section:</span></dt> + <dd><ul><li style="--primary-color: #ea2e83">[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li></ul></dd> </dl> ` + +exports[`test/snapshot/generateAlbumTrackList.js > TAP > generateAlbumTrackList (snapshot) > collapseDurationScope: album 1`] = ` +<dl class="album-group-list"> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">First section: (~1:00)</span></dt> + <dd> + <ul> + <li>(0:20) <a href="track/t1/">Track 1</a></li> + <li>[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t2/">Track 2</a></li> + <li>(0:40) <a href="track/t3/">Track 3</a></li> + </ul> + </dd> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">Second section:</span></dt> + <dd><ul><li style="--primary-color: #ea2e83">[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li></ul></dd> +</dl> +<ul> + <li>(0:20) <a href="track/t1/">Track 1</a></li> + <li>[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t2/">Track 2</a></li> + <li>(0:40) <a href="track/t3/">Track 3</a></li> + <li style="--primary-color: #ea2e83">[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> +</ul> +<ul> + <li><a href="track/t2/">Track 2</a></li> + <li style="--primary-color: #ea2e83"><a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> +</ul> +` + +exports[`test/snapshot/generateAlbumTrackList.js > TAP > generateAlbumTrackList (snapshot) > collapseDurationScope: never 1`] = ` +<dl class="album-group-list"> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">First section: (~1:00)</span></dt> + <dd> + <ul> + <li>(0:20) <a href="track/t1/">Track 1</a></li> + <li>[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t2/">Track 2</a></li> + <li>(0:40) <a href="track/t3/">Track 3</a></li> + </ul> + </dd> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">Second section:</span></dt> + <dd><ul><li style="--primary-color: #ea2e83">[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li></ul></dd> +</dl> +<ul> + <li>(0:20) <a href="track/t1/">Track 1</a></li> + <li>[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t2/">Track 2</a></li> + <li>(0:40) <a href="track/t3/">Track 3</a></li> + <li style="--primary-color: #ea2e83">[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> +</ul> +<ul> + <li>[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t2/">Track 2</a></li> + <li style="--primary-color: #ea2e83">[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> +</ul> +` + +exports[`test/snapshot/generateAlbumTrackList.js > TAP > generateAlbumTrackList (snapshot) > collapseDurationScope: section 1`] = ` +<dl class="album-group-list"> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">First section: (~1:00)</span></dt> + <dd> + <ul> + <li>(0:20) <a href="track/t1/">Track 1</a></li> + <li>[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t2/">Track 2</a></li> + <li>(0:40) <a href="track/t3/">Track 3</a></li> + </ul> + </dd> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">Second section:</span></dt> + <dd><ul><li style="--primary-color: #ea2e83"><a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li></ul></dd> +</dl> +<ul> + <li>(0:20) <a href="track/t1/">Track 1</a></li> + <li>[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t2/">Track 2</a></li> + <li>(0:40) <a href="track/t3/">Track 3</a></li> + <li style="--primary-color: #ea2e83">[mocked: generateAlbumTrackListMissingDuration - slots: {}] <a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> +</ul> +<ul> + <li><a href="track/t2/">Track 2</a></li> + <li style="--primary-color: #ea2e83"><a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> +</ul> +` + +exports[`test/snapshot/generateAlbumTrackList.js > TAP > generateAlbumTrackList (snapshot) > collapseDurationScope: track 1`] = ` +<dl class="album-group-list"> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">First section: (~1:00)</span></dt> + <dd> + <ul> + <li>(0:20) <a href="track/t1/">Track 1</a></li> + <li><a href="track/t2/">Track 2</a></li> + <li>(0:40) <a href="track/t3/">Track 3</a></li> + </ul> + </dd> + <dt class="content-heading" tabindex="0"><span class="content-heading-main-title">Second section:</span></dt> + <dd><ul><li style="--primary-color: #ea2e83"><a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li></ul></dd> +</dl> +<ul> + <li>(0:20) <a href="track/t1/">Track 1</a></li> + <li><a href="track/t2/">Track 2</a></li> + <li>(0:40) <a href="track/t3/">Track 3</a></li> + <li style="--primary-color: #ea2e83"><a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> +</ul> +<ul> + <li><a href="track/t2/">Track 2</a></li> + <li style="--primary-color: #ea2e83"><a href="track/t4/">Track 4</a> <span class="by">by <a href="artist/apricot/">Apricot</a> and <a href="artist/peach/">Peach</a></span></li> +</ul> +` diff --git a/test/snapshot/generateAlbumTrackList.js b/test/snapshot/generateAlbumTrackList.js index 904ba98f..181cc1d2 100644 --- a/test/snapshot/generateAlbumTrackList.js +++ b/test/snapshot/generateAlbumTrackList.js @@ -2,7 +2,12 @@ import t from 'tap'; import {testContentFunctions} from '#test-lib'; testContentFunctions(t, 'generateAlbumTrackList (snapshot)', async (t, evaluate) => { - await evaluate.load(); + await evaluate.load({ + mock: { + generateAlbumTrackListMissingDuration: + evaluate.stubContentFunction('generateAlbumTrackListMissingDuration'), + }, + }); const contribs1 = [ {who: {name: 'Apricot', directory: 'apricot', urls: null}}, @@ -18,31 +23,82 @@ testContentFunctions(t, 'generateAlbumTrackList (snapshot)', async (t, evaluate) const tracks = [ {name: 'Track 1', directory: 't1', duration: 20, artistContribs: contribs1, color: color1}, - {name: 'Track 2', directory: 't2', duration: 30, artistContribs: contribs1, color: color1}, + {name: 'Track 2', directory: 't2', duration: 0, artistContribs: contribs1, color: color1}, {name: 'Track 3', directory: 't3', duration: 40, artistContribs: contribs1, color: color1}, - {name: 'Track 4', directory: 't4', duration: 5, artistContribs: contribs2, color: color2}, + {name: 'Track 4', directory: 't4', duration: 0, artistContribs: contribs2, color: color2}, ]; - evaluate.snapshot('basic behavior, with track sections', { + const albumWithTrackSections = { + color: color1, + artistContribs: contribs1, + trackSections: [ + {name: 'First section', tracks: tracks.slice(0, 3)}, + {name: 'Second section', tracks: tracks.slice(3)}, + ], + tracks, + }; + + const albumWithoutTrackSections = { + color: color1, + artistContribs: contribs1, + trackSections: [{isDefaultTrackSection: true, tracks}], + tracks, + }; + + const albumWithNoDuration = { + color: color1, + artistContribs: contribs1, + trackSections: [{isDefaultTrackSection: true, tracks: [tracks[1], tracks[3]]}], + tracks: [tracks[1], tracks[3]], + }; + + evaluate.snapshot(`basic behavior, with track sections`, { + name: 'generateAlbumTrackList', + args: [albumWithTrackSections], + }); + + evaluate.snapshot(`basic behavior, default track section`, { + name: 'generateAlbumTrackList', + args: [albumWithoutTrackSections], + }); + + evaluate.snapshot(`collapseDurationScope: never`, { + name: 'generateAlbumTrackList', + slots: {collapseDurationScope: 'never'}, + multiple: [ + {args: [albumWithTrackSections]}, + {args: [albumWithoutTrackSections]}, + {args: [albumWithNoDuration]}, + ], + }); + + evaluate.snapshot(`collapseDurationScope: track`, { + name: 'generateAlbumTrackList', + slots: {collapseDurationScope: 'track'}, + multiple: [ + {args: [albumWithTrackSections]}, + {args: [albumWithoutTrackSections]}, + {args: [albumWithNoDuration]}, + ], + }); + + evaluate.snapshot(`collapseDurationScope: section`, { name: 'generateAlbumTrackList', - args: [{ - color: color1, - artistContribs: contribs1, - trackSections: [ - {name: 'First section', tracks: tracks.slice(0, 3)}, - {name: 'Second section', tracks: tracks.slice(3)}, - ], - tracks, - }], + slots: {collapseDurationScope: 'section'}, + multiple: [ + {args: [albumWithTrackSections]}, + {args: [albumWithoutTrackSections]}, + {args: [albumWithNoDuration]}, + ], }); - evaluate.snapshot('basic behavior, default track section', { + evaluate.snapshot(`collapseDurationScope: album`, { name: 'generateAlbumTrackList', - args: [{ - color: color1, - artistContribs: contribs1, - trackSections: [{isDefaultTrackSection: true, tracks}], - tracks, - }], + slots: {collapseDurationScope: 'album'}, + multiple: [ + {args: [albumWithTrackSections]}, + {args: [albumWithoutTrackSections]}, + {args: [albumWithNoDuration]}, + ], }); }); |