From: Jérôme Benoit Date: Sat, 28 Feb 2026 21:24:07 +0000 (+0100) Subject: refactor(tests): remove deprecated code and backward compatibility X-Git-Tag: ocpp-server@v3.0.0~66 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=fda8a4e0424b1f3e7f5c877c6f2fbf5b3ec57364;p=e-mobility-charging-stations-simulator.git refactor(tests): remove deprecated code and backward compatibility - Remove unused createUIProtocolMock from MockWebSocket.ts - Remove backward compat re-exports from UIServerTestUtils.ts - Migrate all evsesCount usages to evseConfiguration.evsesCount - Remove deprecated evsesCount option from MockChargingStationOptions - Simplify determineEvseUsage function --- diff --git a/tests/charging-station/ChargingStation-Connectors.test.ts b/tests/charging-station/ChargingStation-Connectors.test.ts index 4b8591cb..354eb6b6 100644 --- a/tests/charging-station/ChargingStation-Connectors.test.ts +++ b/tests/charging-station/ChargingStation-Connectors.test.ts @@ -143,7 +143,10 @@ await describe('ChargingStation Connector and EVSE State', async () => { }) await it('should return 0 for getNumberOfEvses() in non-EVSE mode', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 0 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 0 }, + }) station = result.station expect(station.hasEvses).toBe(false) @@ -151,7 +154,10 @@ await describe('ChargingStation Connector and EVSE State', async () => { }) await it('should return undefined for getEvseIdByConnectorId() in non-EVSE mode', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 0 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 0 }, + }) station = result.station expect(station.getEvseIdByConnectorId(1)).toBeUndefined() @@ -173,21 +179,30 @@ await describe('ChargingStation Connector and EVSE State', async () => { }) await it('should enable hasEvses flag in EVSE mode', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station expect(station.hasEvses).toBe(true) }) await it('should return correct EVSE count via getNumberOfEvses() in EVSE mode', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station expect(station.getNumberOfEvses()).toBe(1) }) await it('should return connector status via getConnectorStatus() in EVSE mode', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station // Connectors are nested under EVSEs in EVSE mode @@ -199,7 +214,10 @@ await describe('ChargingStation Connector and EVSE State', async () => { }) await it('should map connector IDs to EVSE IDs via getEvseIdByConnectorId()', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station // In single-EVSE mode, both connectors should map to EVSE 1 @@ -208,14 +226,20 @@ await describe('ChargingStation Connector and EVSE State', async () => { }) await it('should return undefined for getEvseIdByConnectorId() with invalid connector', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station expect(station.getEvseIdByConnectorId(999)).toBeUndefined() }) await it('should return EVSE status via getEvseStatus() for valid EVSE IDs', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station const evseStatus = station.getEvseStatus(1) @@ -226,14 +250,20 @@ await describe('ChargingStation Connector and EVSE State', async () => { }) await it('should return undefined for getEvseStatus() with invalid EVSE IDs', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station expect(station.getEvseStatus(999)).toBeUndefined() }) await it('should return true for hasConnector() with connectors in EVSE mode', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station expect(station.hasConnector(1)).toBe(true) @@ -241,14 +271,20 @@ await describe('ChargingStation Connector and EVSE State', async () => { }) await it('should return false for hasConnector() with non-existing connector in EVSE mode', () => { - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station expect(station.hasConnector(999)).toBe(false) }) await it('should correctly count connectors in EVSE mode via getNumberOfConnectors()', () => { - const result = createMockChargingStation({ connectorsCount: 4, evsesCount: 2 }) + const result = createMockChargingStation({ + connectorsCount: 4, + evseConfiguration: { evsesCount: 2 }, + }) station = result.station // Should return total connectors across all EVSEs diff --git a/tests/charging-station/ChargingStation-Transactions.test.ts b/tests/charging-station/ChargingStation-Transactions.test.ts index af1f3035..b69eed44 100644 --- a/tests/charging-station/ChargingStation-Transactions.test.ts +++ b/tests/charging-station/ChargingStation-Transactions.test.ts @@ -68,7 +68,10 @@ await describe('ChargingStation Transaction Management', async () => { await it('should return undefined for getEvseIdByTransactionId in non-EVSE mode', () => { // Arrange - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 0 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 0 }, + }) station = result.station const connector1 = station.getConnectorStatus(1) if (connector1 != null) { @@ -85,7 +88,10 @@ await describe('ChargingStation Transaction Management', async () => { await it('should return EVSE id for getEvseIdByTransactionId in EVSE mode with active transaction', () => { // Arrange - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 2 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 2 }, + }) station = result.station // Get connector in EVSE 1 const connector1 = station.getConnectorStatus(1) @@ -335,7 +341,10 @@ await describe('ChargingStation Transaction Management', async () => { await it('should handle transactions across multiple EVSEs', () => { // Arrange - 4 connectors across 2 EVSEs - const result = createMockChargingStation({ connectorsCount: 4, evsesCount: 2 }) + const result = createMockChargingStation({ + connectorsCount: 4, + evseConfiguration: { evsesCount: 2 }, + }) station = result.station // Set up transaction on connector 1 (EVSE 1) and connector 3 (EVSE 2) @@ -399,7 +408,10 @@ await describe('ChargingStation Transaction Management', async () => { await it('should return idTag in EVSE mode for getTransactionIdTag', () => { // Arrange - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 2 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 2 }, + }) station = result.station const connector2 = station.getConnectorStatus(2) diff --git a/tests/charging-station/ChargingStation.test.ts b/tests/charging-station/ChargingStation.test.ts index ce58592c..e0b7557a 100644 --- a/tests/charging-station/ChargingStation.test.ts +++ b/tests/charging-station/ChargingStation.test.ts @@ -52,7 +52,10 @@ await describe('ChargingStation Integration Tests', async () => { }) await it('should create mock charging station with EVSE mode', () => { - const result = createMockChargingStation({ connectorsCount: 4, evsesCount: 2 }) + const result = createMockChargingStation({ + connectorsCount: 4, + evseConfiguration: { evsesCount: 2 }, + }) const station = result.station expect(station.hasEvses).toBe(true) @@ -175,7 +178,10 @@ await describe('ChargingStation Integration Tests', async () => { await it('should support EVSE mode with reservations', async () => { // Create station with EVSEs - const result = createMockChargingStation({ connectorsCount: 2, evsesCount: 1 }) + const result = createMockChargingStation({ + connectorsCount: 2, + evseConfiguration: { evsesCount: 1 }, + }) station = result.station // Verify EVSE structure diff --git a/tests/charging-station/helpers/StationHelpers.ts b/tests/charging-station/helpers/StationHelpers.ts index 2e61b339..e0f047b8 100644 --- a/tests/charging-station/helpers/StationHelpers.ts +++ b/tests/charging-station/helpers/StationHelpers.ts @@ -91,9 +91,6 @@ export interface MockChargingStationOptions { evsesCount?: number } - /** Number of EVSEs (enables EVSE mode if > 0) - deprecated, use evseConfiguration */ - evsesCount?: number - /** Heartbeat interval in seconds */ heartbeatInterval?: number @@ -290,7 +287,6 @@ export function createMockChargingStation ( connectorDefaults, connectorsCount = 2, evseConfiguration, - evsesCount = 0, heartbeatInterval = TEST_HEARTBEAT_INTERVAL_SECONDS, index = 1, ocppConfiguration, @@ -305,8 +301,8 @@ export function createMockChargingStation ( } = options // Determine EVSE usage: explicit config OR OCPP 2.0/2.0.1 auto-detection - const useEvses = determineEvseUsage(options, evsesCount) - const effectiveEvsesCount = evseConfiguration?.evsesCount ?? evsesCount + const useEvses = determineEvseUsage(options) + const effectiveEvsesCount = evseConfiguration?.evsesCount ?? 0 // Initialize mocks const mockWebSocket = new MockWebSocket(`ws://localhost:8080/${baseName}-${String(index)}`) @@ -945,13 +941,9 @@ export async function waitForCondition ( /** * Determines whether EVSEs should be used based on configuration * @param options - Configuration options to check - * @param legacyEvsesCount - Legacy evsesCount option for backward compatibility * @returns True if EVSEs should be used, false otherwise */ -function determineEvseUsage ( - options: MockChargingStationOptions, - legacyEvsesCount: number -): boolean { +function determineEvseUsage (options: MockChargingStationOptions): boolean { // If explicitly set to 0, don't use EVSEs if (options.evseConfiguration?.evsesCount === 0) { return false @@ -960,7 +952,6 @@ function determineEvseUsage ( const effectiveOcppVersion = options.stationInfo?.ocppVersion ?? options.ocppVersion return ( options.evseConfiguration?.evsesCount != null || - legacyEvsesCount > 0 || effectiveOcppVersion === OCPPVersion.VERSION_20 || effectiveOcppVersion === OCPPVersion.VERSION_201 ) diff --git a/tests/charging-station/mocks/MockWebSocket.ts b/tests/charging-station/mocks/MockWebSocket.ts index 32f2c6cb..04e75bc7 100644 --- a/tests/charging-station/mocks/MockWebSocket.ts +++ b/tests/charging-station/mocks/MockWebSocket.ts @@ -186,19 +186,3 @@ export class MockWebSocket extends EventEmitter { this.emit('close', 1006, Buffer.from('Connection terminated')) } } - -/** - * Factory function to create a MockWebSocket configured for UI protocol - * @param protocol - UI protocol version (default: 'ui0.0.1') - * @returns MockWebSocket instance configured for UI testing - * @example - * ```typescript - * const uiWs = createUIProtocolMock() - * expect(uiWs.protocol).toBe('ui0.0.1') - * ``` - */ -export function createUIProtocolMock (protocol = 'ui0.0.1'): MockWebSocket { - const ws = new MockWebSocket('ws://localhost:8080/ui') - ws.protocol = protocol - return ws -} diff --git a/tests/charging-station/ui-server/UIServerTestUtils.ts b/tests/charging-station/ui-server/UIServerTestUtils.ts index bc5a0458..f22dddf6 100644 --- a/tests/charging-station/ui-server/UIServerTestUtils.ts +++ b/tests/charging-station/ui-server/UIServerTestUtils.ts @@ -20,21 +20,18 @@ import { ProcedureName, ResponseStatus, } from '../../../src/types/index.js' -import { waitForCondition } from '../helpers/StationHelpers.js' -import { MockWebSocket as BaseMockWebSocket, createUIProtocolMock } from '../mocks/MockWebSocket.js' - -// Re-export MockWebSocket for backward compatibility -// Note: Use createMockUIWebSocket() factory for new code -export { BaseMockWebSocket as MockWebSocket } +import { MockWebSocket } from '../mocks/MockWebSocket.js' /** * Create a MockWebSocket configured for UI protocol testing. * @param protocol - UI protocol version (default: 'ui0.0.1') * @returns MockWebSocket instance configured for UI testing */ -export const createMockUIWebSocket = createUIProtocolMock -// Re-export waitForCondition for backward compatibility -export { waitForCondition } +export function createMockUIWebSocket (protocol = 'ui0.0.1'): MockWebSocket { + const ws = new MockWebSocket('ws://localhost:8080/ui') + ws.protocol = protocol + return ws +} export const createMockUIServerConfiguration = ( overrides?: Partial