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 --- test/things.js | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 test/things.js (limited to 'test') diff --git a/test/things.js b/test/things.js new file mode 100644 index 0000000..7274515 --- /dev/null +++ b/test/things.js @@ -0,0 +1,71 @@ +import test from 'tape'; + +import { + Album, + Thing, + Track, + TrackGroup, +} from '../src/data/things.js'; + +function stubAlbum(tracks) { + const album = new Album(); + const trackGroup = new TrackGroup(); + trackGroup.tracksByRef = tracks.map(t => Thing.getReference(t)); + album.trackGroups = [trackGroup]; + album.trackData = tracks; + return album; +} + +test(`Track.coverArtDate`, t => { + t.plan(5); + + // Priority order is as follows, with the last (trackCoverArtDate) being + // greatest priority. + const albumDate = new Date('2010-10-10'); + const albumTrackArtDate = new Date('2012-12-12'); + const trackDateFirstReleased = new Date('2008-08-08'); + const trackCoverArtDate = new Date('2009-09-09'); + + const track = new Track(); + track.directory = 'foo'; + + const album = stubAlbum([track]); + + track.albumData = [album]; + + // 1. coverArtDate defaults to null + + t.is(track.coverArtDate, null); + + // 2. coverArtDate inherits album release date + + album.date = albumDate; + + // XXX clear cache so change in album's property is reflected + track.albumData = []; + track.albumData = [album]; + + t.is(track.coverArtDate, albumDate); + + // 3. coverArtDate inherits album trackArtDate + + album.trackArtDate = albumTrackArtDate; + + // XXX clear cache again + track.albumData = []; + track.albumData = [album]; + + t.is(track.coverArtDate, albumTrackArtDate); + + // 4. coverArtDate is overridden dateFirstReleased + + track.dateFirstReleased = trackDateFirstReleased; + + t.is(track.coverArtDate, trackDateFirstReleased); + + // 5. coverArtDate is overridden coverArtDate + + track.coverArtDate = trackCoverArtDate; + + t.is(track.coverArtDate, trackCoverArtDate); +}); -- cgit 1.3.0-6-gf8a5