import { describe, expect, it } from 'vitest'; import { API_ENDPOINT, dataPath, moveOldStoredKeys } from '../../src/core/site'; function memoryStore(initial: Record) { const items = new Map(Object.entries(initial)); return { items, get length() { return items.size; }, key: (i: number) => [...items.keys()][i] ?? null, getItem: (key: string) => items.get(key) ?? null, setItem: (key: string, value: string) => void items.set(key, value), removeItem: (key: string) => void items.delete(key), }; } describe('site', () => { it('serves the API and the data files under /feuerwerk/', () => { expect(API_ENDPOINT).toBe('/feuerwerk/api/index.php'); expect(dataPath('textures')).toBe('/feuerwerk/data/textures'); }); it('moves the keys stored under the old name and leaves the others alone', () => { const store = memoryStore({ 'game-maker.panel-sizes': '{"left":300}', 'game-maker.saves.p1.Savegame': '{"Lives":2}', 'other-site.key': 'x', }); expect(moveOldStoredKeys(store)).toBe(2); expect(Object.fromEntries(store.items)).toEqual({ 'feuerwerk.panel-sizes': '{"left":300}', 'feuerwerk.saves.p1.Savegame': '{"Lives":2}', 'other-site.key': 'x', }); }); it('keeps a value the new name already has and drops the old one', () => { const store = memoryStore({ 'game-maker.general-settings': 'old', 'feuerwerk.general-settings': 'new' }); expect(moveOldStoredKeys(store)).toBe(0); expect(Object.fromEntries(store.items)).toEqual({ 'feuerwerk.general-settings': 'new' }); }); it('does nothing the second time', () => { const store = memoryStore({ 'game-maker.folded-sections': '[]' }); moveOldStoredKeys(store); expect(moveOldStoredKeys(store)).toBe(0); expect(Object.fromEntries(store.items)).toEqual({ 'feuerwerk.folded-sections': '[]' }); }); });