mirror of
https://github.com/finos/SymphonyElectron.git
synced 2024-12-27 17:31:36 -06:00
Electron-66 (Unit tests) (#120)
* Electron-66 - Added more unit tests for config, getRegistry & throttle * Electron-66 - Added some more unit tests and enabled activity detection unit test
This commit is contained in:
parent
4a02beeb86
commit
a839c86d83
@ -95,5 +95,6 @@ module.exports = {
|
|||||||
send: send,
|
send: send,
|
||||||
setActivityWindow: setActivityWindow,
|
setActivityWindow: setActivityWindow,
|
||||||
activityDetection: activityDetection,
|
activityDetection: activityDetection,
|
||||||
|
monitorUserActivity: monitorUserActivity, // Exporting this for unit test
|
||||||
initiateActivityDetection: initiateActivityDetection
|
initiateActivityDetection: initiateActivityDetection
|
||||||
};
|
};
|
||||||
|
@ -164,4 +164,9 @@ function saveUserConfig(fieldName, newValue, oldConfig) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { getConfigField, updateConfigField, configFileName };
|
module.exports = {
|
||||||
|
getConfigField,
|
||||||
|
updateConfigField,
|
||||||
|
configFileName,
|
||||||
|
saveUserConfig // Exporting this for unit tests
|
||||||
|
};
|
||||||
|
@ -1,10 +1,30 @@
|
|||||||
// const activityDetection = require('../js/activityDetection/activityDetection.js');
|
const electron = require('./__mocks__/electron');
|
||||||
// const electron = require('./__mocks__/electron');
|
const childProcess = require('child_process');
|
||||||
|
|
||||||
xdescribe('Tests for Activity Detection', function() {
|
let activityDetection;
|
||||||
|
|
||||||
beforeAll(function () {
|
describe('Tests for Activity Detection', function() {
|
||||||
activityDetection.setActivityWindow(120000, electron.ipcRenderer);
|
|
||||||
|
var originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
|
||||||
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000;
|
||||||
|
|
||||||
|
beforeAll(function (done) {
|
||||||
|
childProcess.exec('npm rebuild --runtime=electron --target=1.2.2 --disturl=https://atom.io/download/atom-shell --build-from-source', function (err) {
|
||||||
|
activityDetection = require('../js/activityDetection/activityDetection.js');
|
||||||
|
activityDetection.setActivityWindow(120000, electron.ipcRenderer);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
jest.clearAllMocks()
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(function (done) {
|
||||||
|
childProcess.exec('npm run rebuild', function (err, stdout) {
|
||||||
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
|
||||||
|
done();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should get user activity where user is not idle', function() {
|
it('should get user activity where user is not idle', function() {
|
||||||
@ -37,4 +57,25 @@ xdescribe('Tests for Activity Detection', function() {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should monitor user activity', function () {
|
||||||
|
activityDetection.setActivityWindow(500000, electron.ipcRenderer);
|
||||||
|
const spy = jest.spyOn(activityDetection, 'monitorUserActivity');
|
||||||
|
|
||||||
|
expect(spy).not.toBeCalled();
|
||||||
|
|
||||||
|
activityDetection.monitorUserActivity();
|
||||||
|
expect(spy).toHaveBeenCalled();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not send activity event as data is undefined', function () {
|
||||||
|
const spy = jest.spyOn(activityDetection, 'send');
|
||||||
|
|
||||||
|
expect(spy).not.toBeCalled();
|
||||||
|
|
||||||
|
activityDetection.send(undefined);
|
||||||
|
expect(spy).toHaveBeenCalledWith(undefined);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
const { getConfigField, updateConfigField, configFileName } = require('../js/config');
|
const { getConfigField, updateConfigField, configFileName, saveUserConfig } = require('../js/config');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const os = require('os');
|
const os = require('os');
|
||||||
@ -135,6 +135,40 @@ describe('getConfigField tests', function() {
|
|||||||
expect(url).toBe('something');
|
expect(url).toBe('something');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should fail when global config path is invalid', function() {
|
||||||
|
|
||||||
|
var globalConfig = {
|
||||||
|
url: 'something-else'
|
||||||
|
};
|
||||||
|
createTempGlobalConfig(globalConfig);
|
||||||
|
|
||||||
|
let correctConfigDir = globalConfigDir;
|
||||||
|
globalConfigDir = '//';
|
||||||
|
|
||||||
|
return getConfigField('url').catch(function(err) {
|
||||||
|
globalConfigDir = correctConfigDir;
|
||||||
|
expect(err).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail when user config path is invalid', function() {
|
||||||
|
|
||||||
|
var userConfig = {
|
||||||
|
url: 'something'
|
||||||
|
};
|
||||||
|
createTempUserConfig(userConfig);
|
||||||
|
|
||||||
|
let correctConfigDir = userConfigDir;
|
||||||
|
userConfigDir = '//';
|
||||||
|
|
||||||
|
return getConfigField('url').catch(function(err) {
|
||||||
|
userConfigDir = correctConfigDir;
|
||||||
|
expect(err).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('updateConfigField tests', function() {
|
describe('updateConfigField tests', function() {
|
||||||
@ -142,7 +176,7 @@ describe('getConfigField tests', function() {
|
|||||||
it('should succeed and overwrite existing field', function() {
|
it('should succeed and overwrite existing field', function() {
|
||||||
var userConfig = {
|
var userConfig = {
|
||||||
url: 'something'
|
url: 'something'
|
||||||
}
|
};
|
||||||
|
|
||||||
createTempUserConfig(userConfig);
|
createTempUserConfig(userConfig);
|
||||||
|
|
||||||
@ -157,7 +191,7 @@ describe('getConfigField tests', function() {
|
|||||||
it('should succeed and add new field', function() {
|
it('should succeed and add new field', function() {
|
||||||
var userConfig = {
|
var userConfig = {
|
||||||
url: 'something'
|
url: 'something'
|
||||||
}
|
};
|
||||||
|
|
||||||
createTempUserConfig(userConfig);
|
createTempUserConfig(userConfig);
|
||||||
|
|
||||||
@ -169,5 +203,87 @@ describe('getConfigField tests', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should fail to update if invalid field name', function() {
|
||||||
|
|
||||||
|
var userConfig = {
|
||||||
|
url: 'something'
|
||||||
|
};
|
||||||
|
|
||||||
|
createTempUserConfig(userConfig);
|
||||||
|
|
||||||
|
return updateConfigField('', 'hello word').catch(function (err) {
|
||||||
|
expect(err).toBe('can not save config, invalid input');
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw error if path is not defined', function() {
|
||||||
|
|
||||||
|
userConfigDir = null;
|
||||||
|
|
||||||
|
return updateConfigField('url2', 'hello world')
|
||||||
|
.catch(function (err) {
|
||||||
|
expect(err).toThrow(err);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw error if fieldName is not defined', function() {
|
||||||
|
|
||||||
|
var userConfig = {
|
||||||
|
url: 'something'
|
||||||
|
};
|
||||||
|
|
||||||
|
createTempUserConfig(userConfig);
|
||||||
|
|
||||||
|
return saveUserConfig(undefined, 'something', 'oldConfig')
|
||||||
|
.catch(function (reject) {
|
||||||
|
expect(reject).toBe('can not save config, invalid input');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw error if config is not defined', function() {
|
||||||
|
|
||||||
|
var userConfig = {
|
||||||
|
url: 'something'
|
||||||
|
};
|
||||||
|
|
||||||
|
createTempUserConfig(userConfig);
|
||||||
|
|
||||||
|
return saveUserConfig('url2', 'something', undefined)
|
||||||
|
.catch(function (reject) {
|
||||||
|
expect(reject).toBe('can not save config, invalid input');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw error if config file is not correct', function() {
|
||||||
|
|
||||||
|
var userConfig = {
|
||||||
|
url: 'something'
|
||||||
|
};
|
||||||
|
createTempUserConfig(userConfig);
|
||||||
|
|
||||||
|
let correctConfigDir = userConfigDir;
|
||||||
|
userConfigDir = '//';
|
||||||
|
|
||||||
|
return saveUserConfig('url2', 'hello world', 'url')
|
||||||
|
.catch(function(err) {
|
||||||
|
userConfigDir = correctConfigDir;
|
||||||
|
expect(err).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw error if path is not defined for saveUserConfig()', function() {
|
||||||
|
|
||||||
|
userConfigDir = null;
|
||||||
|
|
||||||
|
return saveUserConfig('url2', 'hello world')
|
||||||
|
.catch(function (err) {
|
||||||
|
expect(err).toThrow(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -52,5 +52,19 @@ describe('logger tests', function() {
|
|||||||
|
|
||||||
let queue = log.logQueue;
|
let queue = log.logQueue;
|
||||||
expect(queue.length).toBe(100);
|
expect(queue.length).toBe(100);
|
||||||
})
|
});
|
||||||
|
|
||||||
|
it('should not send the logs', function() {
|
||||||
|
let mockWin = {
|
||||||
|
send: jest.fn()
|
||||||
|
};
|
||||||
|
|
||||||
|
log.setLogWindow(mockWin);
|
||||||
|
log.send();
|
||||||
|
|
||||||
|
let queue = log.logQueue;
|
||||||
|
|
||||||
|
expect(mockWin.send).toHaveBeenCalledWith("log", {"msgs": []});
|
||||||
|
expect(queue.length).toBe(0);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
70
tests/utils/getRegistry.test.js
Normal file
70
tests/utils/getRegistry.test.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
const getRegistry = require('../../js/utils/getRegistry.js');
|
||||||
|
|
||||||
|
const { isMac } = require('../../js/utils/misc.js');
|
||||||
|
|
||||||
|
describe('Tests for getRegistry', function() {
|
||||||
|
|
||||||
|
describe('Should not get registry for mac', function() {
|
||||||
|
|
||||||
|
if (isMac){
|
||||||
|
|
||||||
|
it('should fail to get path for mac', function(done) {
|
||||||
|
|
||||||
|
getRegistry('PodUrl').then(resolve).catch(reject);
|
||||||
|
|
||||||
|
function resolve() {
|
||||||
|
// shouldn't get here
|
||||||
|
expect(true).toBe(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function reject(err) {
|
||||||
|
expect(err).toBeTruthy();
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Should get registry for windows', function() {
|
||||||
|
|
||||||
|
if (!isMac){
|
||||||
|
|
||||||
|
it('should get registry path', function(done) {
|
||||||
|
|
||||||
|
getRegistry('PodUrl').then(resolve).catch(reject);
|
||||||
|
|
||||||
|
function resolve(url) {
|
||||||
|
expect(url).toBe('string');
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
function reject(err) {
|
||||||
|
expect(err).toBeTruthy();
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not get the registry path', function(done) {
|
||||||
|
|
||||||
|
getRegistry('wrongUrl').then(resolve).catch(reject);
|
||||||
|
|
||||||
|
function resolve() {
|
||||||
|
expect(true).toBe(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function reject(err) {
|
||||||
|
expect(err).toBeTruthy();
|
||||||
|
expect(err).toBe('Cannot find PodUrl Registry. Using default url.');
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
@ -55,6 +55,26 @@ describe('throttle tests', function() {
|
|||||||
expect(callback.mock.calls.length).toBe(2);
|
expect(callback.mock.calls.length).toBe(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('expect clearTimeout to be invoked', function() {
|
||||||
|
const callback = jest.fn();
|
||||||
|
const throttledCB = throttle(1000, callback);
|
||||||
|
|
||||||
|
expect(callback).not.toBeCalled();
|
||||||
|
|
||||||
|
throttledCB();
|
||||||
|
expect(callback.mock.calls.length).toBe(1);
|
||||||
|
expect(clearTimeout.mock.calls.length).toBe(0);
|
||||||
|
|
||||||
|
now -= 1000;
|
||||||
|
throttledCB();
|
||||||
|
expect(callback.mock.calls.length).toBe(1);
|
||||||
|
|
||||||
|
now += 1000;
|
||||||
|
throttledCB();
|
||||||
|
expect(callback.mock.calls.length).toBe(1);
|
||||||
|
expect(clearTimeout.mock.calls.length).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
describe('expect to throw exception', function() {
|
describe('expect to throw exception', function() {
|
||||||
it('when calling throttle with time equal to zero', function(done) {
|
it('when calling throttle with time equal to zero', function(done) {
|
||||||
try {
|
try {
|
||||||
|
Loading…
Reference in New Issue
Block a user