Adds sort_name/cover_url to ArtistRef, sort_title to AlbumRef (matching backend Task 5 wire shape), HomePayload type, and qk.home/albumsAlpha/ artistTracks query keys. Updates existing test fixtures to satisfy the new required fields. Verified clean via 'npm run check' (0 errors, only pre-existing warnings). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { describe, expect, test } from 'vitest';
|
|
import { qk } from './queries';
|
|
|
|
describe('qk key generators', () => {
|
|
test('artists key includes sort discriminator', () => {
|
|
expect(qk.artists('alpha')).toEqual(['artists', { sort: 'alpha' }]);
|
|
expect(qk.artists('newest')).toEqual(['artists', { sort: 'newest' }]);
|
|
});
|
|
|
|
test('artist key tuple', () => {
|
|
expect(qk.artist('abc')).toEqual(['artist', 'abc']);
|
|
});
|
|
|
|
test('album key tuple', () => {
|
|
expect(qk.album('xyz')).toEqual(['album', 'xyz']);
|
|
});
|
|
});
|
|
|
|
describe('qk search keys', () => {
|
|
test('search summary key includes q', () => {
|
|
expect(qk.search('foo')).toEqual(['search', { q: 'foo' }]);
|
|
});
|
|
test('searchArtists key includes q', () => {
|
|
expect(qk.searchArtists('foo')).toEqual(['searchArtists', { q: 'foo' }]);
|
|
});
|
|
test('searchAlbums key includes q', () => {
|
|
expect(qk.searchAlbums('foo')).toEqual(['searchAlbums', { q: 'foo' }]);
|
|
});
|
|
test('searchTracks key includes q', () => {
|
|
expect(qk.searchTracks('foo')).toEqual(['searchTracks', { q: 'foo' }]);
|
|
});
|
|
});
|
|
|
|
describe('qk M6a keys', () => {
|
|
test('M6a query keys are stable', () => {
|
|
expect(qk.home()).toEqual(['home']);
|
|
expect(qk.albumsAlpha()).toEqual(['albumsAlpha']);
|
|
expect(qk.artistTracks('a1')).toEqual(['artistTracks', 'a1']);
|
|
});
|
|
});
|