diff options
-rw-r--r-- | tap-snapshots/test/snapshot/generateAlbumTrackList.js.test.cjs | 30 | ||||
-rw-r--r-- | test/snapshot/generateAlbumTrackList.js | 41 | ||||
-rw-r--r-- | test/unit/content/dependencies/generateAlbumTrackList.js | 40 |
3 files changed, 111 insertions, 0 deletions
diff --git a/tap-snapshots/test/snapshot/generateAlbumTrackList.js.test.cjs b/tap-snapshots/test/snapshot/generateAlbumTrackList.js.test.cjs new file mode 100644 index 00000000..14316988 --- /dev/null +++ b/tap-snapshots/test/snapshot/generateAlbumTrackList.js.test.cjs @@ -0,0 +1,30 @@ +/* IMPORTANT + * This snapshot file is auto-generated, but designed for humans. + * It should be checked into source control and tracked carefully. + * Re-generate by setting TAP_SNAPSHOT=1 and running tests. + * Make sure to inspect the output below. Do not ignore changes! + */ +'use strict' +exports[`test/snapshot/generateAlbumTrackList.js TAP generateAlbumTrackList (snapshot) > basic behavior, default track section 1`] = ` +<ul> + <li>Item: Track 1</li> + <li>Item: Track 2</li> + <li>Item: Track 3</li> + <li>Item: Track 4</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">First section (~1:30):</dt> + <dd> + <ul> + <li>Item: Track 1</li> + <li>Item: Track 2</li> + <li>Item: Track 3</li> + </ul> + </dd> + <dt class="content-heading" tabindex="0">Second section (0:05):</dt> + <dd><ul><li>Item: Track 4</li></ul></dd> +</dl> +` diff --git a/test/snapshot/generateAlbumTrackList.js b/test/snapshot/generateAlbumTrackList.js new file mode 100644 index 00000000..055f189e --- /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 00000000..80b086ca --- /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'); +}); |