jest.mock('electron-log'); jest.mock('../src/app/window-handler', () => { return { windowHandler: { setIsAutoReload: jest.fn(() => true), }, }; }); describe('activity detection', () => { const originalTimeout: number = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; let activityDetectionInstance; beforeEach(() => { jest.resetModules(); jest.useFakeTimers(); // I did it for reset module imported between tests const { activityDetection } = require('../src/app/activity-detection'); activityDetectionInstance = activityDetection; }); afterAll((done) => { jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; done(); }); it('should call `setWindowAndThreshold` correctly', () => { // mocking startActivityMonitor const spy: jest.SpyInstance = jest.spyOn( activityDetectionInstance, 'setWindowAndThreshold', ); const idleThresholdMock: number = 1000; jest .spyOn(activityDetectionInstance, 'startActivityMonitor') .mockImplementation(() => jest.fn()); activityDetectionInstance.setWindowAndThreshold({}, idleThresholdMock); expect(spy).toBeCalledWith({}, 1000); }); it('should start activity monitor when `setWindowAndThreshold` is called', () => { const idleThresholdMock: number = 1000; const spy: jest.SpyInstance = jest .spyOn(activityDetectionInstance, 'startActivityMonitor') .mockImplementation(() => jest.fn()); activityDetectionInstance.setWindowAndThreshold({}, idleThresholdMock); expect(spy).toBeCalled(); }); it('should call `activity` when `startActivityMonitor` is called', () => { const spy: jest.SpyInstance = jest.spyOn( activityDetectionInstance, 'activity', ); activityDetectionInstance.startActivityMonitor(); jest.runOnlyPendingTimers(); expect(spy).toBeCalled(); }); it('should call `sendActivity` when period was greater than idleTime', () => { // period is this.idleThreshold = 60 * 60 * 1000; const mockIdleTime: number = 50; const spy: jest.SpyInstance = jest.spyOn( activityDetectionInstance, 'sendActivity', ); const mockIdleTimeinMillis: number = mockIdleTime * 1000; activityDetectionInstance.activity(mockIdleTime); expect(spy).toBeCalledWith(mockIdleTimeinMillis); }); });