mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-21 15:53:50 +02:00
add test
This commit is contained in:
69
src/views/Sidebar/__tests__/sidebarSettingsUtils.test.js
Normal file
69
src/views/Sidebar/__tests__/sidebarSettingsUtils.test.js
Normal file
@@ -0,0 +1,69 @@
|
||||
import { describe, expect, test } from 'vitest';
|
||||
|
||||
import {
|
||||
normalizeFavoriteGroupsChange,
|
||||
resolveFavoriteGroups
|
||||
} from '../sidebarSettingsUtils';
|
||||
|
||||
// ─── resolveFavoriteGroups ───────────────────────────────────────────
|
||||
|
||||
describe('resolveFavoriteGroups', () => {
|
||||
const allKeys = ['group_1', 'group_2', 'local:MyGroup'];
|
||||
|
||||
test('returns allKeys when stored is empty (= all)', () => {
|
||||
expect(resolveFavoriteGroups([], allKeys)).toEqual(allKeys);
|
||||
});
|
||||
|
||||
test('returns stored value when not empty', () => {
|
||||
const stored = ['group_1'];
|
||||
expect(resolveFavoriteGroups(stored, allKeys)).toEqual(stored);
|
||||
});
|
||||
|
||||
test('returns stored even if it equals allKeys', () => {
|
||||
expect(resolveFavoriteGroups([...allKeys], allKeys)).toEqual(allKeys);
|
||||
});
|
||||
|
||||
test('handles empty allKeys', () => {
|
||||
expect(resolveFavoriteGroups([], [])).toEqual([]);
|
||||
});
|
||||
});
|
||||
|
||||
// ─── normalizeFavoriteGroupsChange ───────────────────────────────────
|
||||
|
||||
describe('normalizeFavoriteGroupsChange', () => {
|
||||
const allKeys = ['group_1', 'group_2', 'local:MyGroup'];
|
||||
|
||||
test('returns [] when value is null', () => {
|
||||
expect(normalizeFavoriteGroupsChange(null, allKeys)).toEqual([]);
|
||||
});
|
||||
|
||||
test('returns [] when value is empty array', () => {
|
||||
expect(normalizeFavoriteGroupsChange([], allKeys)).toEqual([]);
|
||||
});
|
||||
|
||||
test('returns [] when all groups are selected', () => {
|
||||
expect(normalizeFavoriteGroupsChange([...allKeys], allKeys)).toEqual(
|
||||
[]
|
||||
);
|
||||
});
|
||||
|
||||
test('returns [] when value is superset of allKeys', () => {
|
||||
expect(
|
||||
normalizeFavoriteGroupsChange([...allKeys, 'extra'], allKeys)
|
||||
).toEqual([]);
|
||||
});
|
||||
|
||||
test('returns filter subset when not all selected', () => {
|
||||
const subset = ['group_1'];
|
||||
expect(normalizeFavoriteGroupsChange(subset, allKeys)).toEqual(subset);
|
||||
});
|
||||
|
||||
test('returns filter subset with two items', () => {
|
||||
const subset = ['group_1', 'group_2'];
|
||||
expect(normalizeFavoriteGroupsChange(subset, allKeys)).toEqual(subset);
|
||||
});
|
||||
|
||||
test('treats non-empty value as all-selected when allKeys is empty (vacuous truth)', () => {
|
||||
expect(normalizeFavoriteGroupsChange(['group_1'], [])).toEqual([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user