Files
Psychotoxical-psysonic/src/lib/api/openArtistRefs.test.ts
T
Psychotoxical 36b0042d9a refactor(decouple): move coerceOpenArtistRefs to lib/api (off artist feature)
First step of decoupling the audio core from feature imports. coerceOpenArtist
Refs is a pure Subsonic-response normalizer (one-object-vs-array quirk) that was
mis-membered in features/artist but consumed by the audio core (songToTrack,
trackArtistRefs) and others. Relocate it beside its SubsonicOpenArtistRef type in
lib/api/; drop the artist-barrel re-export; repoint the 4 barrel consumers.

Removes the @/features/artist runtime edge from the audio core (utils/playback)
entirely. tsc 0, lint 0/0, suite 319/2353 green.

(composerBrowseSessionStore's ALL_SENTINEL import from @/features/artist remains
— that's a non-audio global browse store, separate from this decouple.)
2026-06-30 08:53:56 +02:00

20 lines
665 B
TypeScript

import { describe, expect, it } from 'vitest';
import { coerceOpenArtistRefs } from '@/lib/api/openArtistRefs';
describe('coerceOpenArtistRefs', () => {
it('returns an empty array for nullish input', () => {
expect(coerceOpenArtistRefs(undefined)).toEqual([]);
expect(coerceOpenArtistRefs(null)).toEqual([]);
});
it('passes through arrays', () => {
const refs = [{ id: 'a1', name: 'One' }, { id: 'a2', name: 'Two' }];
expect(coerceOpenArtistRefs(refs)).toBe(refs);
});
it('wraps a single ref object from Subsonic JSON', () => {
const ref = { id: 'a1', name: 'Solo' };
expect(coerceOpenArtistRefs(ref)).toEqual([ref]);
});
});