← Files BranchaARCHIVED FILE
skills/brancha/app/src/server/settings/settings.store.test.ts
1.29 KB · Oct 3, 2026 · 06:30 UTC
import assert from 'node:assert/strict';
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import test from 'node:test';
import { SettingsStore } from './settings.store.js';
test('settings default to system Chinese and persist theme and locale', () => {
const directory = mkdtempSync(join(tmpdir(), 'brancha-settings-'));
try {
const store = new SettingsStore(directory);
assert.deepEqual(store.read(), { theme: 'system', locale: 'zh-CN' });
assert.deepEqual(store.write({ theme: 'dark', locale: 'ja' }), { theme: 'dark', locale: 'ja' });
assert.deepEqual(store.read(), { theme: 'dark', locale: 'ja' });
assert.deepEqual(JSON.parse(readFileSync(join(directory, 'settings.json'), 'utf8')), { theme: 'dark', locale: 'ja' });
} finally {
rmSync(directory, { recursive: true, force: true });
}
});
test('invalid settings fall back without rewriting user data', () => {
const directory = mkdtempSync(join(tmpdir(), 'brancha-settings-'));
try {
writeFileSync(join(directory, 'settings.json'), '{"theme":"sepia"}\n');
assert.deepEqual(new SettingsStore(directory).read(), { theme: 'system', locale: 'zh-CN' });
} finally {
rmSync(directory, { recursive: true, force: true });
}
});
SHA-256: efa269e5c743584c2ef1460132a25e64893c43a1c01580d17c84a62938f720cf