[MM 7970] Maintain online status while the Desktop App is in the background ... and other things. (#993)
* monitor os-level user activity * disable eslint warnings * add tests for UserActivityMonitor * couple more tests * udpate headers of new files
This commit is contained in:
89
test/specs/main/user_activity_monitor_test.js
Normal file
89
test/specs/main/user_activity_monitor_test.js
Normal file
@@ -0,0 +1,89 @@
|
||||
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
import assert from 'assert';
|
||||
|
||||
import UserActivityMonitor from '../../../src/main/UserActivityMonitor';
|
||||
|
||||
describe('UserActivityMonitor', () => {
|
||||
describe('updateIdleTime', () => {
|
||||
it('should set idle time to provided value', () => {
|
||||
const userActivityMonitor = new UserActivityMonitor();
|
||||
const idleTime = Math.round(Date.now() / 1000);
|
||||
userActivityMonitor.updateIdleTime(idleTime);
|
||||
assert.equal(userActivityMonitor.userIdleTime, idleTime);
|
||||
});
|
||||
});
|
||||
|
||||
describe('updateUserActivityStatus', () => {
|
||||
let userActivityMonitor;
|
||||
|
||||
beforeEach(() => {
|
||||
userActivityMonitor = new UserActivityMonitor();
|
||||
});
|
||||
|
||||
it('should set user status to active', () => {
|
||||
userActivityMonitor.updateUserActivityStatus(true);
|
||||
assert.equal(userActivityMonitor.userIsActive, true);
|
||||
});
|
||||
it('should set user status to inactive', () => {
|
||||
userActivityMonitor.updateUserActivityStatus(false);
|
||||
assert.equal(userActivityMonitor.userIsActive, false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('handleSystemGoingAway', () => {
|
||||
it('should set user status to inactive and forceInactive to true', () => {
|
||||
const userActivityMonitor = new UserActivityMonitor();
|
||||
userActivityMonitor.isActive = true;
|
||||
userActivityMonitor.forceInactive = false;
|
||||
userActivityMonitor.handleSystemGoingAway();
|
||||
assert.equal(!userActivityMonitor.userIsActive && userActivityMonitor.forceInactive, true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('handleSystemComingBack', () => {
|
||||
it('should set user status to active and forceInactive to false', () => {
|
||||
const userActivityMonitor = new UserActivityMonitor();
|
||||
userActivityMonitor.isActive = false;
|
||||
userActivityMonitor.forceInactive = true;
|
||||
userActivityMonitor.handleSystemComingBack();
|
||||
assert.equal(userActivityMonitor.userIsActive && !userActivityMonitor.forceInactive, true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('sendStatusUpdate', () => {
|
||||
let userActivityMonitor;
|
||||
|
||||
beforeEach(() => {
|
||||
userActivityMonitor = new UserActivityMonitor();
|
||||
});
|
||||
|
||||
it('should emit a non-system triggered status event indicating a user is active', () => {
|
||||
userActivityMonitor.on('status', ({userIsActive, isSystemEvent}) => {
|
||||
assert.equal(userIsActive && !isSystemEvent, true);
|
||||
});
|
||||
userActivityMonitor.updateUserActivityStatus(true, false);
|
||||
});
|
||||
|
||||
it('should emit a non-system triggered status event indicating a user is inactive', () => {
|
||||
userActivityMonitor.on('status', ({userIsActive, isSystemEvent}) => {
|
||||
assert.equal(!userIsActive && !isSystemEvent, true);
|
||||
});
|
||||
userActivityMonitor.updateUserActivityStatus(false, false);
|
||||
});
|
||||
|
||||
it('should emit a system triggered status event indicating a user is active', () => {
|
||||
userActivityMonitor.on('status', ({userIsActive, isSystemEvent}) => {
|
||||
assert.equal(userIsActive && isSystemEvent, true);
|
||||
});
|
||||
userActivityMonitor.updateUserActivityStatus(true, true);
|
||||
});
|
||||
|
||||
it('should emit a system triggered status event indicating a user is inactive', () => {
|
||||
userActivityMonitor.on('status', ({userIsActive, isSystemEvent}) => {
|
||||
assert.equal(!userIsActive && isSystemEvent, true);
|
||||
});
|
||||
userActivityMonitor.updateUserActivityStatus(false, true);
|
||||
});
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user