diff --git a/lib/gui/app/models/settings.ts b/lib/gui/app/models/settings.ts index a8bf2a6c..7deb1f11 100644 --- a/lib/gui/app/models/settings.ts +++ b/lib/gui/app/models/settings.ts @@ -92,14 +92,17 @@ async function load(): Promise { const loaded = load(); -export async function set(key: string, value: any): Promise { +export async function set( + key: string, + value: any, + writeConfigFileFn = writeConfigFile, +): Promise { debug('set', key, value); await loaded; const previousValue = settings[key]; settings[key] = value; try { - // Use exports.writeConfigFile() so it can be mocked in tests - await exports.writeConfigFile(CONFIG_PATH, settings); + await writeConfigFileFn(CONFIG_PATH, settings); } catch (error) { // Revert to previous value if persisting settings failed settings[key] = previousValue; diff --git a/tests/gui/models/settings.spec.ts b/tests/gui/models/settings.spec.ts index 3f7bf83a..cab37a74 100644 --- a/tests/gui/models/settings.spec.ts +++ b/tests/gui/models/settings.spec.ts @@ -44,16 +44,15 @@ describe('Browser: settings', () => { await settings.set('foo', 'bar'); expect(await settings.get('foo')).to.equal('bar'); - const writeConfigFileStub = stub(settings, 'writeConfigFile'); + const writeConfigFileStub = stub(); writeConfigFileStub.returns(Promise.reject(new Error('settings error'))); - const p = settings.set('foo', 'baz'); + const p = settings.set('foo', 'baz', writeConfigFileStub); await checkError(p, async (error) => { expect(error).to.be.an.instanceof(Error); expect(error.message).to.equal('settings error'); expect(await settings.get('foo')).to.equal('bar'); }); - writeConfigFileStub.restore(); }); }); @@ -83,15 +82,17 @@ describe('Browser: settings', () => { await settings.set('foo', 'bar'); expect(await settings.get('foo')).to.equal('bar'); - const writeConfigFileStub = stub(settings, 'writeConfigFile'); + const writeConfigFileStub = stub(); writeConfigFileStub.returns(Promise.reject(new Error('settings error'))); - await checkError(settings.set('foo', 'baz'), async (error) => { - expect(error).to.be.an.instanceof(Error); - expect(error.message).to.equal('settings error'); - expect(await settings.get('foo')).to.equal('bar'); - }); - writeConfigFileStub.restore(); + await checkError( + settings.set('foo', 'baz', writeConfigFileStub), + async (error) => { + expect(error).to.be.an.instanceof(Error); + expect(error.message).to.equal('settings error'); + expect(await settings.get('foo')).to.equal('bar'); + }, + ); }); }); });