Files
Iris/__tests__/util/arrays.test.js
Colin Powell 1b682addf2
All checks were successful
CI / test (push) Successful in 1m18s
CI / deploy (push) Successful in 1m53s
[sorting] Derive browse date from filename, fall back to tag
2026-09-22 15:53:52 -04:00

108 lines
2.7 KiB
JavaScript

import { sortItems } from '../../src/js/util/arrays';
describe('sortItems', () => {
describe('date sorting', () => {
it('should prefer a date embedded in the filename over the tag date', () => {
const tracks = [
{
name: 'Talk Python',
uri: 'file:///media/podcasts/563-2026-09-22-EVE-Online.mp3',
release_date: '2023-10-13',
},
{
name: 'Up First',
uri: 'file:///media/podcasts/2026-09-01_Up%20First.mp3',
release_date: '2026-09-01',
},
];
expect(sortItems(tracks, 'date').map((track) => track.name)).toEqual([
'Up First',
'Talk Python',
]);
});
it('should fall back to the tag date when the filename has no date', () => {
const tracks = [
{
name: 'Newer',
uri: 'spotify:track:newer',
release_date: '2001-05-01',
},
{
name: 'Older',
uri: 'spotify:track:older',
release_date: '1999-01-01',
},
];
expect(sortItems(tracks, 'date').map((track) => track.name)).toEqual([
'Older',
'Newer',
]);
});
it('should sort year-only tag dates within their year', () => {
const tracks = [
{
name: 'Year only',
uri: 'spotify:track:year',
release_date: '2026',
},
{
name: 'Previous year',
uri: 'spotify:track:previous',
release_date: '2025-12-31',
},
];
expect(sortItems(tracks, 'date').map((track) => track.name)).toEqual([
'Previous year',
'Year only',
]);
});
it('should sort tracks sharing a date by album and track number', () => {
const tracks = [
{
name: 'Second',
uri: 'file:///media/podcasts/2026-09-22_second.mp3',
album: { name: 'Podcast' },
track_number: 2,
},
{
name: 'First',
uri: 'file:///media/podcasts/2026-09-22_first.mp3',
album: { name: 'Podcast' },
track_number: 1,
},
];
expect(sortItems(tracks, 'date').map((track) => track.name)).toEqual([
'First',
'Second',
]);
});
it('should reverse the order', () => {
const tracks = [
{
name: 'Talk Python',
uri: 'file:///media/podcasts/563-2026-09-22-EVE-Online.mp3',
release_date: '2023-10-13',
},
{
name: 'Up First',
uri: 'file:///media/podcasts/2026-09-01_Up%20First.mp3',
release_date: '2026-09-01',
},
];
expect(sortItems(tracks, 'date', true).map((track) => track.name)).toEqual([
'Talk Python',
'Up First',
]);
});
});
});