« get me outta code hell

coverArtDate and Thing unit tests - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/test
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2022-02-13 16:30:49 -0400
committer(quasar) nebula <qznebula@protonmail.com>2022-02-13 16:30:49 -0400
commit5bb1f8573990e5c5c92f416f7fda9811547c0580 (patch)
tree96c48a253bc5af280dc4e86cdf8cfb42e9505903 /test
parentcd5c1775883712ed52a135d8d24bfd2db698a832 (diff)
coverArtDate and Thing unit tests
Diffstat (limited to 'test')
-rw-r--r--test/things.js71
1 files changed, 71 insertions, 0 deletions
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);
+});