From d79908cc9ee5a315570f387a60435e7cd586e855 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 30 Jul 2026 06:39:57 +0000 Subject: [PATCH] test(ui): cover autoSaveEnabled settings sync round-trip Ensure the new persisted editor autosave flag applies from server settings, autosaves through appearanceAutoSave, and resets to true when omitted from an authoritative snapshot. Co-authored-by: Serhii Dziupin --- packages/ui/src/lib/persistence.test.ts | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/packages/ui/src/lib/persistence.test.ts b/packages/ui/src/lib/persistence.test.ts index daa09e3f..8921969a 100644 --- a/packages/ui/src/lib/persistence.test.ts +++ b/packages/ui/src/lib/persistence.test.ts @@ -497,4 +497,47 @@ describe('updateDesktopSettings', () => { expect(saveCalls.some((changes) => changes.terminalShell === 'zsh')).toBe(true); expect(saveCalls.some((changes) => changes.terminalLoginShells?.includes('zsh'))).toBe(true); }); + + test('applies persisted autoSaveEnabled from server settings', async () => { + getWindow(); + invalidateSettingsCache(); + useUIStore.getState().setAutoSaveEnabled(true); + registerSettingsApi(async () => ({}), async () => ({ + settings: { autoSaveEnabled: false, draftStartersCraftGoalAdded: true, draftStartersScheduleTaskAdded: true }, + source: 'web', + })); + + await syncDesktopSettings(); + + expect(useUIStore.getState().autoSaveEnabled).toBe(false); + }); + + test('autosaves autoSaveEnabled changes to shared settings', async () => { + getWindow(); + useUIStore.getState().setAutoSaveEnabled(true); + const saveCalls: Array> = []; + registerSettingsSave(async (changes) => { + saveCalls.push(changes); + return changes as SettingsPayload; + }); + startAppearanceAutoSave(); + + useUIStore.getState().setAutoSaveEnabled(false); + await delay(500); + + expect(saveCalls.some((changes) => changes.autoSaveEnabled === false)).toBe(true); + }); + + test('resets omitted autoSaveEnabled to the default enabled state', async () => { + getWindow(); + useUIStore.getState().setAutoSaveEnabled(false); + registerSettingsApi(async () => ({}), async () => ({ + settings: { draftStartersCraftGoalAdded: true, draftStartersScheduleTaskAdded: true }, + source: 'web', + })); + + await syncDesktopSettings(); + + expect(useUIStore.getState().autoSaveEnabled).toBe(true); + }); });