feat(library): add source chips to game library

Chips show only when the user has 2 or more sources.
A selected source the user lacks stays visible, so it can be cleared.
This commit is contained in:
lobo committed 2026-10-09 10:03:05 +02:00
1 parent d3ad19e2fa
commit e136a7abc1
8 files changed
+224 -55

No files matched your search

+16 -1
View File
@@ -1,5 +1,5 @@
import {describe, expect, it} from 'vitest';
import {backlogShare, libraryQuery, NO_PRIORITY, parseStatus, toBacklogRequest} from './backlog.js';
import {backlogShare, libraryQuery, NO_PRIORITY, parseSources, parseStatus, toBacklogRequest} from './backlog.js';
describe('toBacklogRequest', () => {
it('sends every field', () => {
@@ -60,3 +60,18 @@ describe('libraryQuery hideDuplicates', () => {
expect(libraryQuery({...base, hideDuplicates: false})).not.toContain('hideDuplicates');
});
});
describe('sources', () => {
it('parseSources_KeepsKnownValuesInOrder', () => {
expect(parseSources('PSN,FOO,STEAM,PSN')).toEqual(['STEAM', 'PSN']);
expect(parseSources(null)).toEqual([]);
expect(parseSources('')).toEqual([]);
});
it('libraryQuery_SetsSourceOnlyWhenSelected', () => {
const base = {page: 0, size: 20, sort: 'appid,asc', status: null, q: ''};
expect(libraryQuery({...base, source: 'STEAM,PSN'})).toBe('page=0&size=20&sort=appid%2Casc&source=STEAM%2CPSN');
expect(libraryQuery({...base, source: ''})).not.toContain('source');
expect(libraryQuery(base)).not.toContain('source');
});
});