From 5920fa888dd50ce577c1f9d8864b23231f84a34b Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 6 Feb 2024 22:04:13 -0400 Subject: test: generateAlbumTrackList: collapseDurationScope snapshots --- test/snapshot/generateAlbumTrackList.js | 96 ++++++++++++++++++++++++++------- 1 file changed, 76 insertions(+), 20 deletions(-) (limited to 'test') 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]}, + ], }); }); -- cgit 1.3.0-6-gf8a5