Files
mattermostest/src/main/app/config.test.js
Devin Binnie 39150137b6 [MM-51874] Migrate loading screen to singleton (#2655)
* Migrate loadingScreen to singleton

* REVERT ME when MainWindow singleton changes are merged

* Revert "REVERT ME when MainWindow singleton changes are merged"

This reverts commit 2de5520117b9aefb8eeb161d493de7cb275f7a5b.
2023-04-04 11:49:40 -04:00

119 lines
3.7 KiB
JavaScript

// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {app} from 'electron';
import {RELOAD_CONFIGURATION} from 'common/communication';
import Config from 'common/config';
import {handleConfigUpdate} from 'main/app/config';
import {handleMainWindowIsShown} from 'main/app/intercom';
import {setLoggingLevel} from 'main/app/utils';
import WindowManager from 'main/windows/windowManager';
import AutoLauncher from 'main/AutoLauncher';
jest.mock('electron', () => ({
app: {
getAppPath: () => '/path/to/app',
isReady: jest.fn(),
setPath: jest.fn(),
},
ipcMain: {
emit: jest.fn(),
on: jest.fn(),
},
}));
jest.mock('main/app/utils', () => ({
handleUpdateMenuEvent: jest.fn(),
updateSpellCheckerLocales: jest.fn(),
updateServerInfos: jest.fn(),
setLoggingLevel: jest.fn(),
}));
jest.mock('main/app/intercom', () => ({
handleMainWindowIsShown: jest.fn(),
}));
jest.mock('main/AutoLauncher', () => ({
enable: jest.fn(),
disable: jest.fn(),
}));
jest.mock('main/badge', () => ({
setUnreadBadgeSetting: jest.fn(),
}));
jest.mock('main/tray/tray', () => ({
refreshTrayImages: jest.fn(),
}));
jest.mock('main/views/loadingScreen', () => ({}));
jest.mock('main/windows/windowManager', () => ({
handleUpdateConfig: jest.fn(),
sendToRenderer: jest.fn(),
initializeCurrentServerName: jest.fn(),
}));
describe('main/app/config', () => {
describe('handleConfigUpdate', () => {
beforeEach(() => {
AutoLauncher.enable.mockResolvedValue({});
AutoLauncher.disable.mockResolvedValue({});
});
afterEach(() => {
delete Config.registryConfigData;
});
it('should reload renderer config only when app is ready', () => {
handleConfigUpdate({});
expect(WindowManager.sendToRenderer).not.toBeCalled();
app.isReady.mockReturnValue(true);
handleConfigUpdate({});
expect(WindowManager.sendToRenderer).toBeCalledWith(RELOAD_CONFIGURATION);
});
it('should set download path if applicable', () => {
handleConfigUpdate({downloadLocation: '/a/download/location'});
expect(app.setPath).toHaveBeenCalledWith('downloads', '/a/download/location');
});
it('should enable/disable auto launch on windows/linux', () => {
const originalPlatform = process.platform;
Object.defineProperty(process, 'platform', {
value: 'win32',
});
handleConfigUpdate({});
expect(AutoLauncher.disable).toHaveBeenCalled();
handleConfigUpdate({autostart: true});
expect(AutoLauncher.enable).toHaveBeenCalled();
Object.defineProperty(process, 'platform', {
value: originalPlatform,
});
});
it('should recheck teams after config update if registry data is pulled in', () => {
const originalPlatform = process.platform;
Object.defineProperty(process, 'platform', {
value: 'win32',
});
Config.registryConfigData = {};
handleConfigUpdate({teams: []});
expect(handleMainWindowIsShown).toHaveBeenCalled();
Object.defineProperty(process, 'platform', {
value: originalPlatform,
});
});
it('should set logging level correctly', () => {
handleConfigUpdate({logLevel: 'info'});
expect(setLoggingLevel).toBeCalledWith('info');
handleConfigUpdate({logLevel: 'debug'});
expect(setLoggingLevel).toBeCalledWith('debug');
});
});
});