Files
paseo/packages/desktop/src/settings/desktop-settings-commands.test.ts
T
Mohamed Boudra ae3e88e7e1 feat(desktop): split daemon and release settings to main process
Move daemon management and release channel settings out of the renderer's
AsyncStorage and into a desktop-owned settings store persisted by the main
process. Adds a "Keep daemon running after quit" option, a daemon lifecycle
section in settings, and a one-time migration of legacy renderer-owned
desktop settings.
2026-04-25 13:59:07 +07:00

68 lines
2.1 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import { DEFAULT_DESKTOP_SETTINGS, type DesktopSettingsStore } from "./desktop-settings";
import { createDesktopSettingsCommandHandlers } from "./desktop-settings-commands";
function createStoreMock(): DesktopSettingsStore {
return {
get: vi.fn(async () => DEFAULT_DESKTOP_SETTINGS),
patch: vi.fn(async () => ({
...DEFAULT_DESKTOP_SETTINGS,
releaseChannel: "beta",
})),
migrateLegacyRendererSettings: vi.fn(async () => ({
...DEFAULT_DESKTOP_SETTINGS,
releaseChannel: "beta",
daemon: {
manageBuiltInDaemon: false,
keepRunningAfterQuit: true,
},
})),
};
}
describe("desktop-settings-commands", () => {
it("exposes get and patch handlers through the desktop command bus shape", async () => {
const store = createStoreMock();
const handlers = createDesktopSettingsCommandHandlers({ settingsStore: store });
await expect(handlers.get_desktop_settings()).resolves.toEqual(DEFAULT_DESKTOP_SETTINGS);
await expect(
handlers.patch_desktop_settings({
daemon: { keepRunningAfterQuit: false },
}),
).resolves.toEqual({
...DEFAULT_DESKTOP_SETTINGS,
releaseChannel: "beta",
});
expect(store.get).toHaveBeenCalledTimes(1);
expect(store.patch).toHaveBeenCalledWith({
daemon: { keepRunningAfterQuit: false },
});
});
it("accepts legacy renderer settings migration payloads", async () => {
const store = createStoreMock();
const handlers = createDesktopSettingsCommandHandlers({ settingsStore: store });
const result = await handlers.migrate_legacy_desktop_settings({
releaseChannel: "beta",
manageBuiltInDaemon: false,
});
expect(result).toEqual({
...DEFAULT_DESKTOP_SETTINGS,
releaseChannel: "beta",
daemon: {
manageBuiltInDaemon: false,
keepRunningAfterQuit: true,
},
});
expect(store.migrateLegacyRendererSettings).toHaveBeenCalledWith({
releaseChannel: "beta",
manageBuiltInDaemon: false,
});
});
});