diff --git a/package.json b/package.json index b70d074d..813d189b 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "lint:js": "eslint --ext .js --ext .jsx ." }, "devDependencies": { + "deepmerge": "^1.5.2", "7zip-bin": "^2.0.4", "babel-core": "^6.24.1", "babel-eslint": "^7.2.3", diff --git a/src/common/config/base.json b/src/common/config/base.json index 850251fa..96283bd6 100644 --- a/src/common/config/base.json +++ b/src/common/config/base.json @@ -4,7 +4,7 @@ "showTrayIcon": false, "trayIconTheme": "light", "minimizeToTray": false, - "version": "1", + "version": 1, "notifications": { "flashWindow": 0 }, @@ -17,7 +17,7 @@ "showTrayIcon": false, "trayIconTheme": "light", "minimizeToTray": false, - "version": "1", + "version": 1, "notifications": { "flashWindow": 0 }, diff --git a/src/common/settings.js b/src/common/settings.js index 8761787f..dbc9cf21 100644 --- a/src/common/settings.js +++ b/src/common/settings.js @@ -1,7 +1,10 @@ 'use strict'; const fs = require('fs'); -const deepmerge = require('deepmerge').default; +let deepmerge = require('deepmerge').default; +if (process.env.TEST) { + deepmerge = require('deepmerge'); // eslint-disable-line +} const settingsVersion = 1; const baseConfig = require('./config/base.json'); @@ -32,7 +35,7 @@ function loadDefault(version, spellCheckerLocale) { } function upgradeV0toV1(configV0) { - var config = loadDefault('1'); + var config = loadDefault(1); config.teams.push({ name: 'Primary team', url: configV0.url @@ -41,7 +44,7 @@ function upgradeV0toV1(configV0) { } function upgrade(config, newAppVersion) { - var configVersion = config.version ? config.version : '1'; + var configVersion = config.version ? config.version : 0; if (newAppVersion) { config.lastMattermostVersion = newAppVersion; } diff --git a/src/package.json b/src/package.json index dd5ea7b3..f817f732 100644 --- a/src/package.json +++ b/src/package.json @@ -12,7 +12,7 @@ "auto-launch": "^5.0.1", "bootstrap": "^3.3.7", "create-react-class": "^15.5.3", - "deepmerge": "^1.5.1", + "deepmerge": "^1.5.2", "electron-context-menu": "^0.9.0", "electron-devtools-installer": "^2.2.0", "electron-is-dev": "^0.1.2", diff --git a/test/modules/environment.js b/test/modules/environment.js index ffe8abc7..4fd19f02 100644 --- a/test/modules/environment.js +++ b/test/modules/environment.js @@ -1,4 +1,5 @@ 'use strict'; +process.env.TEST = 'test'; const chai = require('chai'); chai.should(); diff --git a/test/specs/settings_test.js b/test/specs/settings_test.js index 18cfd7de..8db72848 100644 --- a/test/specs/settings_test.js +++ b/test/specs/settings_test.js @@ -1,4 +1,5 @@ const settings = require('../../src/common/settings'); +const deepmerge = require('deepmerge'); describe('common/settings.js', () => { it('should upgrade v0 config file', () => { @@ -10,4 +11,14 @@ describe('common/settings.js', () => { config.teams[0].url.should.equal(v0Config.url); config.version.should.equal(settings.version); }); + + it('should loadDefault config for version 1', () => { + const baseConfig = require('../../src/common/config/base.json'); + const overrideConfig = require('../../src/common/config/override.json'); + const expectedDefaults = deepmerge( + baseConfig[1], overrideConfig[1] || {}, {clone: true, arrayMerge: settings.deepMergeArray} + ); + const defaultConfig = settings.loadDefault(); + defaultConfig.should.eql(expectedDefaults); + }); });