diff --git a/lib/config-store.js b/lib/config-store.js index 68ea488..a72aaea 100644 --- a/lib/config-store.js +++ b/lib/config-store.js @@ -75,6 +75,12 @@ const DEFAULTS = { delaySec: 3, autoStart: true, hosters: [] // pre-selected hosters, empty = ask via modal + }, + remote: { + enabled: false, + port: 9100, + token: '', + allowInput: true } }, history: [] diff --git a/tests/remote-config.test.js b/tests/remote-config.test.js new file mode 100644 index 0000000..bfabc66 --- /dev/null +++ b/tests/remote-config.test.js @@ -0,0 +1,53 @@ +const { describe, it } = require('node:test'); +const assert = require('node:assert'); +const path = require('path'); +const fs = require('fs'); +const os = require('os'); + +// Minimal app mock for ConfigStore +function createTestConfigStore() { + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'mhu-test-')); + const mockApp = { + isPackaged: false, + getPath: (name) => tmpDir, + getPath: () => tmpDir + }; + const ConfigStore = require('../lib/config-store'); + const store = new ConfigStore(mockApp); + store.filePath = path.join(tmpDir, 'test-config.json'); + return { store, tmpDir }; +} + +describe('remote config defaults', () => { + it('should include remote settings in defaults', () => { + const { store } = createTestConfigStore(); + const config = store.load(); + const remote = config.globalSettings.remote; + + assert.strictEqual(remote.enabled, false); + assert.strictEqual(remote.port, 9100); + assert.strictEqual(typeof remote.token, 'string'); + assert.strictEqual(remote.token, ''); + assert.strictEqual(remote.allowInput, true); + }); + + it('should deep-merge remote settings with existing config', async () => { + const { store } = createTestConfigStore(); + // Save config with partial remote settings + await store.save({ + globalSettings: { + remote: { enabled: true, port: 9200 } + } + }); + + const config = store.load(); + const remote = config.globalSettings.remote; + + // Saved values preserved + assert.strictEqual(remote.enabled, true); + assert.strictEqual(remote.port, 9200); + // Defaults merged in + assert.strictEqual(remote.allowInput, true); + assert.strictEqual(remote.token, ''); + }); +});