things.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import test from 'tape';
  2. import {
  3. Album,
  4. Thing,
  5. Track,
  6. TrackGroup,
  7. } from '../src/data/things.js';
  8. function stubAlbum(tracks) {
  9. const album = new Album();
  10. const trackGroup = new TrackGroup();
  11. trackGroup.tracksByRef = tracks.map(t => Thing.getReference(t));
  12. album.trackGroups = [trackGroup];
  13. album.trackData = tracks;
  14. return album;
  15. }
  16. test(`Track.coverArtDate`, t => {
  17. t.plan(5);
  18. // Priority order is as follows, with the last (trackCoverArtDate) being
  19. // greatest priority.
  20. const albumDate = new Date('2010-10-10');
  21. const albumTrackArtDate = new Date('2012-12-12');
  22. const trackDateFirstReleased = new Date('2008-08-08');
  23. const trackCoverArtDate = new Date('2009-09-09');
  24. const track = new Track();
  25. track.directory = 'foo';
  26. const album = stubAlbum([track]);
  27. track.albumData = [album];
  28. // 1. coverArtDate defaults to null
  29. t.is(track.coverArtDate, null);
  30. // 2. coverArtDate inherits album release date
  31. album.date = albumDate;
  32. // XXX clear cache so change in album's property is reflected
  33. track.albumData = [];
  34. track.albumData = [album];
  35. t.is(track.coverArtDate, albumDate);
  36. // 3. coverArtDate inherits album trackArtDate
  37. album.trackArtDate = albumTrackArtDate;
  38. // XXX clear cache again
  39. track.albumData = [];
  40. track.albumData = [album];
  41. t.is(track.coverArtDate, albumTrackArtDate);
  42. // 4. coverArtDate is overridden dateFirstReleased
  43. track.dateFirstReleased = trackDateFirstReleased;
  44. t.is(track.coverArtDate, trackDateFirstReleased);
  45. // 5. coverArtDate is overridden coverArtDate
  46. track.coverArtDate = trackCoverArtDate;
  47. t.is(track.coverArtDate, trackCoverArtDate);
  48. });