Files
Genarrative/src/persistence/storage.test.ts
T
kdletters 071faa482c 统一 Rust 与 TypeScript 格式化门禁
纳入 AGC Cargo workspace 的统一 rustfmt 检查与格式化入口

完成项目 TypeScript/Prettier 与 Rust 全量格式化

修复 Pingora expected executable 门禁的空白敏感误报

同步开发运维文档与 AGC skill pack 格式化忽略规则
2026-09-01 16:28:34 +08:00

73 lines
1.5 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
isRecord,
type JsonStorage,
readStoredJson,
removeStoredJson,
writeStoredJson,
} from './storage';
function createMemoryStorage(): JsonStorage {
const values = new Map<string, string>();
return {
getItem(key) {
return values.has(key) ? values.get(key)! : null;
},
setItem(key, value) {
values.set(key, value);
},
removeItem(key) {
values.delete(key);
},
};
}
describe('storage helpers', () => {
it('reads parsed json values from storage', () => {
const storage = createMemoryStorage();
writeStoredJson({
key: 'example',
value: { value: 42 },
storage,
});
const result = readStoredJson({
key: 'example',
storage,
parse: (value) =>
isRecord(value) && typeof value.value === 'number' ? value.value : null,
});
expect(result).toBe(42);
});
it('returns null when persisted json cannot be parsed', () => {
const storage = createMemoryStorage();
storage.setItem('broken', '{not-valid-json');
const result = readStoredJson({
key: 'broken',
storage,
parse: () => 'unreachable',
});
expect(result).toBeNull();
});
it('removes persisted values', () => {
const storage = createMemoryStorage();
writeStoredJson({
key: 'example',
value: { value: 'keep' },
storage,
});
removeStoredJson('example', storage);
expect(storage.getItem('example')).toBeNull();
});
});