From 85a242bf34a1713d3bc47d79fbfec8cc5a264b4d Mon Sep 17 00:00:00 2001 From: sergeyteleshev Date: Mon, 30 Jun 2025 12:10:54 +0200 Subject: [PATCH] dbeaver/pro#6113 fixes clientActivity wrong spying on SetTimeout (#3559) --- .../src/ClientActivityService.test.ts | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/webapp/packages/core-client-activity/src/ClientActivityService.test.ts b/webapp/packages/core-client-activity/src/ClientActivityService.test.ts index 17a26d934f..c71abdabba 100644 --- a/webapp/packages/core-client-activity/src/ClientActivityService.test.ts +++ b/webapp/packages/core-client-activity/src/ClientActivityService.test.ts @@ -28,9 +28,6 @@ describe('ClientActivityService', () => { beforeEach(() => { vitest.useFakeTimers(); clientActivityService = new ClientActivityService(); - - vitest.spyOn(globalThis, 'setTimeout'); - vitest.spyOn(globalThis, 'clearTimeout'); }); afterEach(() => { @@ -57,24 +54,30 @@ describe('ClientActivityService', () => { it('should clear previous timer if updateActivity is called multiple times', () => { clientActivityService.updateActivity(); - expect(setTimeout).toHaveBeenCalledTimes(1); + expect(clientActivityService.isActive).toBe(true); - vitest.advanceTimersByTime(Math.random() * INACTIVE_PERIOD_TIME - 1); + vitest.advanceTimersByTime(INACTIVE_PERIOD_TIME - 10); clientActivityService.updateActivity(); - expect(clearTimeout).toHaveBeenCalledTimes(1); - expect(setTimeout).toHaveBeenCalledTimes(2); + expect(clientActivityService.isActive).toBe(true); + + vitest.advanceTimersByTime(INACTIVE_PERIOD_TIME); + + expect(clientActivityService.isActive).toBe(false); }); it('should clear timer and reset activity when resetActivity is called', () => { clientActivityService.updateActivity(); - vitest.advanceTimersByTime(Math.random() * INACTIVE_PERIOD_TIME - 1); + vitest.advanceTimersByTime(INACTIVE_PERIOD_TIME - 10); clientActivityService.resetActivity(); expect(clientActivityService.isActive).toBe(false); - expect(clearTimeout).toHaveBeenCalled(); + + vitest.advanceTimersByTime(INACTIVE_PERIOD_TIME); + + expect(clientActivityService.isActive).toBe(false); }); it('should call onActiveStateChange executor with correct value', () => {