mirror of
https://github.com/wuzf/2fa.git
synced 2026-09-06 16:58:28 +08:00
Centralize backup serialization in utils/backup-format.js with a single createBackupEntry() path shared by scheduled backups, manual backups and exports. Introduce utils/backup-index.js for KV key listing/pruning and utils/data-hash.js for change detection, replacing ad-hoc helpers scattered across api/secrets/backup.js, restore.js and worker.js. UI backup/export modules consume the shared format so HTML/JSON/CSV exports round-trip through the same schema.
22 lines
1.2 KiB
JavaScript
22 lines
1.2 KiB
JavaScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { getSettingsCode } from '../../src/ui/scripts/settings.js';
|
|
|
|
describe('settings module code generation', () => {
|
|
it('guards the default export format against stale preference loads and saves', () => {
|
|
const code = getSettingsCode();
|
|
|
|
expect(code).toContain('let preferencesLoadRequestId = 0;');
|
|
expect(code).toContain('let defaultExportFormatChangeVersion = 0;');
|
|
expect(code).toContain('let defaultExportFormatSaveRequestId = 0;');
|
|
expect(code).toContain('const requestId = ++preferencesLoadRequestId;');
|
|
expect(code).toContain('const formatVersionAtStart = defaultExportFormatChangeVersion;');
|
|
expect(code).toContain('if (requestId !== preferencesLoadRequestId) {');
|
|
expect(code).toContain('const selectedFormat = formatSelect.value;');
|
|
expect(code).toContain('const requestId = ++defaultExportFormatSaveRequestId;');
|
|
expect(code).toContain('body: JSON.stringify({ defaultExportFormat: selectedFormat }),');
|
|
expect(code).toContain('if (requestId !== defaultExportFormatSaveRequestId) {');
|
|
expect(code).toContain('const savedFormat = (data.settings && data.settings.defaultExportFormat) || selectedFormat;');
|
|
});
|
|
});
|