From 5bb1f8573990e5c5c92f416f7fda9811547c0580 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sun, 13 Feb 2022 16:30:49 -0400 Subject: coverArtDate and Thing unit tests --- src/data/things.js | 27 ++++++++++++++++++++++++++- src/upd8.js | 10 ++++++---- 2 files changed, 32 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/data/things.js b/src/data/things.js index b5d6f10..e061d58 100644 --- a/src/data/things.js +++ b/src/data/things.js @@ -252,6 +252,9 @@ Thing.common = { }) }; +// Get a reference to a thing (e.g. track:showtime-piano-refrain), using its +// constructor's [Thing.referenceType] as the prefix. This will throw an error +// if the thing's directory isn't yet provided/computable. Thing.getReference = function(thing) { if (!thing.constructor[Thing.referenceType]) throw TypeError(`Passed Thing is ${thing.constructor.name}, which provides no [Thing.referenceType]`); @@ -398,7 +401,6 @@ Track.propertyDescriptors = { urls: Thing.common.urls(), dateFirstReleased: Thing.common.simpleDate(), - coverArtDate: Thing.common.simpleDate(), hasCoverArt: Thing.common.flag(true), hasURLs: Thing.common.flag(true), @@ -451,9 +453,32 @@ Track.propertyDescriptors = { } }, + coverArtDate: { + flags: {update: true, expose: true}, + + update: {validate: isDate}, + + expose: { + dependencies: ['albumData', 'dateFirstReleased'], + transform: (coverArtDate, { albumData, dateFirstReleased, [Track.instance]: track }) => ( + coverArtDate ?? + dateFirstReleased ?? + albumData?.find(album => album.tracks.includes(track))?.trackArtDate ?? + albumData?.find(album => album.tracks.includes(track))?.date ?? + null + ) + } + }, + // Previously known as: (track).artists artistContribs: Thing.common.dynamicContribs('artistContribsByRef'), + // Previously known as: (track).contributors + contributorContribs: Thing.common.dynamicContribs('contributorContribsByRef'), + + // Previously known as: (track).coverArtists + coverArtistContribs: Thing.common.dynamicContribs('coverArtistContribsByRef'), + artTags: { flags: {expose: true}, diff --git a/src/upd8.js b/src/upd8.js index de79a0f..d2f1b08 100755 --- a/src/upd8.js +++ b/src/upd8.js @@ -2780,10 +2780,12 @@ async function main() { console.log(WD.trackData[0].name, WD.trackData[0].album.name); console.log(WD.albumData[0].name, WD.albumData[0].tracks[0].name); console.log(WD.trackData[0].artistContribs[0].who.name); - console.log( - (WD.albumData - .find(album => album.name === 'Alternia') - .artistContribs[0].who.name)); + const demoAlbum1 = WD.albumData.find(album => album.name === 'Alternia'); + const demoAlbum2 = WD.albumData.find(album => album.name === 'Homestuck Vol. 5'); + console.log(demoAlbum1.artistContribs[0]?.who.name); + console.log(demoAlbum2.tracks[0].name, + demoAlbum2.tracks[0].date, + demoAlbum2.tracks[0].coverArtDate); return; -- cgit 1.3.0-6-gf8a5