import { describe, expect, it } from 'vitest'; import { releaseNeed } from '../src/lib/releaseNeed'; import { offlineWave } from '../src/player/offlineWave'; import type { Track } from '@pipu/core'; function track(id: string, reaction: Track['reaction']): Track { return { id, title: id, duration_ms: 1000, artists: [], album: { id: 'a', title: 'A', year: null, cover_url: null, cover_colors: [] }, genres: [], disc_no: 1, track_no: 1, available: true, stream_url: null, reaction, features: null, }; } describe('offline wave', () => { it('drops dislikes and keeps likes ahead of the rest', () => { const tracks = [track('d', 'dislike'), track('n', null), track('l', 'like')]; const order = offlineWave(tracks, () => 0.5).map((t) => t.id); expect(order).toEqual(['l', 'n']); }); }); describe('update dialog decision', () => { it('marks an older install below the minimum as required', () => { expect(releaseNeed(10, 12, 11)).toBe('required'); expect(releaseNeed(11, 12, 11)).toBe('optional'); expect(releaseNeed(12, 12, 11)).toBe('current'); }); });