From d467fe1ef2fab9e5af3b31dbf366a13da2149c1f Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sun, 1 Mar 2026 01:30:36 +0100 Subject: [PATCH] fix(tests): prevent Windows CI hang by moving timer reset to test that enables it - Remove mock.timers.reset() from standardCleanup() - Add explicit mock.timers.reset() to Reset test afterEach - Fix Reset test: wrap orphaned code into proper it() block --- ...OCPP20IncomingRequestService-Reset.test.ts | 59 ++++++++++--------- tests/helpers/TestLifecycleHelpers.ts | 5 -- 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/tests/charging-station/ocpp/2.0/OCPP20IncomingRequestService-Reset.test.ts b/tests/charging-station/ocpp/2.0/OCPP20IncomingRequestService-Reset.test.ts index 8596daf5..3a6a0b8b 100644 --- a/tests/charging-station/ocpp/2.0/OCPP20IncomingRequestService-Reset.test.ts +++ b/tests/charging-station/ocpp/2.0/OCPP20IncomingRequestService-Reset.test.ts @@ -71,6 +71,7 @@ await describe('B11 & B12 - Reset', async () => { }) afterEach(() => { + mock.timers.reset() standardCleanup() }) @@ -223,36 +224,38 @@ await describe('B11 & B12 - Reset', async () => { expect(response.status).toBe(ResetStatusEnumType.Accepted) }) - // Mock charging station without EVSE support - Object.defineProperty(b11MockChargingStation, 'hasEvses', { - configurable: true, - value: false, - writable: true, - }) + await it('should reject EVSE-specific reset when EVSEs not supported (non-EVSE mode)', async () => { + // Mock charging station without EVSE support + Object.defineProperty(b11MockChargingStation, 'hasEvses', { + configurable: true, + value: false, + writable: true, + }) - const resetRequest: OCPP20ResetRequest = { - evseId: 1, - type: ResetEnumType.Immediate, - } + const resetRequest: OCPP20ResetRequest = { + evseId: 1, + type: ResetEnumType.Immediate, + } + + const response: OCPP20ResetResponse = await testableService.handleRequestReset( + b11MockChargingStation, + resetRequest + ) + + expect(response).toBeDefined() + expect(response.status).toBe(ResetStatusEnumType.Rejected) + expect(response.statusInfo).toBeDefined() + expect(response.statusInfo?.reasonCode).toBe(ReasonCodeEnumType.UnsupportedRequest) + expect(response.statusInfo?.additionalInfo).toContain( + 'does not support resetting individual EVSE' + ) - const response: OCPP20ResetResponse = await testableService.handleRequestReset( - b11MockChargingStation, - resetRequest - ) - - expect(response).toBeDefined() - expect(response.status).toBe(ResetStatusEnumType.Rejected) - expect(response.statusInfo).toBeDefined() - expect(response.statusInfo?.reasonCode).toBe(ReasonCodeEnumType.UnsupportedRequest) - expect(response.statusInfo?.additionalInfo).toContain( - 'does not support resetting individual EVSE' - ) - - // Restore original state - Object.defineProperty(b11MockChargingStation, 'hasEvses', { - configurable: false, - value: true, - writable: false, + // Restore original state + Object.defineProperty(b11MockChargingStation, 'hasEvses', { + configurable: true, + value: true, + writable: true, + }) }) await it('should handle EVSE-specific reset without transactions', async () => { diff --git a/tests/helpers/TestLifecycleHelpers.ts b/tests/helpers/TestLifecycleHelpers.ts index 9c1c2e3d..5b30141b 100644 --- a/tests/helpers/TestLifecycleHelpers.ts +++ b/tests/helpers/TestLifecycleHelpers.ts @@ -291,11 +291,6 @@ export function setupConnectorWithTransaction ( */ export function standardCleanup (): void { mock.restoreAll() - try { - mock.timers.reset() - } catch { - // Timers may not have been enabled, ignore - } MockSharedLRUCache.resetInstance() MockIdTagsCache.resetInstance() } -- 2.43.0