From 4b1e89ccf2992565a4bfe4abf46deb60516b8cad Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sat, 28 Feb 2026 22:51:29 +0100 Subject: [PATCH] refactor(tests): remove unused constants and add missing JSDoc - Remove 63 unused constants from ChargingStationTestConstants.ts (73% cleanup) - Add JSDoc to 7 factory functions in UIServerTestUtils.ts - Remove duplicate JSDoc comment in StationHelpers.ts --- .../ChargingStationTestConstants.ts | 214 +----------------- .../helpers/StationHelpers.ts | 1 - .../ui-server/UIServerTestUtils.ts | 33 +++ 3 files changed, 36 insertions(+), 212 deletions(-) diff --git a/tests/charging-station/ChargingStationTestConstants.ts b/tests/charging-station/ChargingStationTestConstants.ts index fe713993..b801a233 100644 --- a/tests/charging-station/ChargingStationTestConstants.ts +++ b/tests/charging-station/ChargingStationTestConstants.ts @@ -13,97 +13,13 @@ * Base identifiers used for creating test charging station instances */ export const TEST_CHARGING_STATION_BASE_NAME = 'CS-TEST' -export const TEST_CHARGING_STATION_ID = 'test-charging-station-001' export const TEST_CHARGING_STATION_HASH_ID = 'cs-test-hash-001' -/** - * OCPP Protocol Versions - * Supported protocol versions for testing - */ -export const OCPP_VERSION_16 = '1.6' -export const OCPP_VERSION_20 = '2.0' -export const OCPP_VERSION_20_1 = '2.0.1' -export const OCPP_VERSION_21 = '2.1' - -/** - * Connector Status Values - OCPP 1.6 - * Defined in OCPP 1.6 §3.7 StatusNotification - * @see src/types/ocpp/1.6/ChargePointStatus.ts - */ -export const OCPP16_CONNECTOR_STATUS_AVAILABLE = 'Available' -export const OCPP16_CONNECTOR_STATUS_CHARGING = 'Charging' -export const OCPP16_CONNECTOR_STATUS_FAULTED = 'Faulted' -export const OCPP16_CONNECTOR_STATUS_FINISHING = 'Finishing' -export const OCPP16_CONNECTOR_STATUS_PREPARING = 'Preparing' -export const OCPP16_CONNECTOR_STATUS_RESERVED = 'Reserved' -export const OCPP16_CONNECTOR_STATUS_SUSPENDED_EV = 'SuspendedEV' -export const OCPP16_CONNECTOR_STATUS_SUSPENDED_EVSE = 'SuspendedEVSE' -export const OCPP16_CONNECTOR_STATUS_UNAVAILABLE = 'Unavailable' - -/** - * Connector Status Values - OCPP 2.0.1 / 2.1 - * Defined in OCPP 2.0.1 §2.2, ConnectorStatusEnumType - * Values differ from OCPP 1.6: "Occupied" instead of "Preparing", no "Charging"/"Finishing" distinction - */ -export const OCPP20_CONNECTOR_STATUS_AVAILABLE = 'Available' -export const OCPP20_CONNECTOR_STATUS_OCCUPIED = 'Occupied' -export const OCPP20_CONNECTOR_STATUS_RESERVED = 'Reserved' -export const OCPP20_CONNECTOR_STATUS_UNAVAILABLE = 'Unavailable' -export const OCPP20_CONNECTOR_STATUS_FAULTED = 'Faulted' - -/** - * Transaction Identifiers - * Test values for transaction ID usage - * - * OCPP 1.6: transactionId is integer, assigned by CSMS in StartTransactionResponse - * OCPP 2.0+: transactionId is UUID string, generated by CS - * - * Special value: -1 is used when StartTransaction fails (OCPP 1.6 Errata §3.18) - * @see tests/charging-station/OCPPSpecRequirements.md §4.2 - */ -export const TEST_TRANSACTION_ID_VALID = 1 -export const TEST_TRANSACTION_ID_VALID_2 = 2 -export const TEST_TRANSACTION_ID_FAILURE = -1 -export const TEST_TRANSACTION_ID_UUID = '12345678-1234-1234-1234-123456789012' - -/** - * EVSE and Connector IDs - * Test values for EVSE and connector addressing - * - * OCPP 1.6: Flat connector model, connectors numbered 1+ - * OCPP 2.0+: Hierarchical EVSE/Connector model - * - EVSE 0 represents the entire charging station - * - Connector 0 on EVSE 0 is the charging station aggregate - * - EVSE 1+ have connectors 1+ - * @see tests/charging-station/OCPPSpecRequirements.md §2.1 - */ -export const TEST_EVSE_ID = 1 -export const TEST_EVSE_ID_STATION = 0 -export const TEST_CONNECTOR_ID = 1 -export const TEST_CONNECTOR_ID_STATION = 0 -export const TEST_CONNECTOR_ID_VALID_INSTANCE = '1' -export const TEST_CONNECTOR_ID_INVALID_INSTANCE = '999' - /** * Timer Intervals (seconds) * Test values for timing-related configuration and expectations */ export const TEST_HEARTBEAT_INTERVAL_SECONDS = 60 -export const TEST_HEARTBEAT_INTERVAL_MIN = 1 -export const TEST_HEARTBEAT_INTERVAL_MAX = 3600 -export const TEST_WEBSOCKET_PING_INTERVAL_SECONDS = 30 -export const TEST_METER_VALUES_INTERVAL_SECONDS = 30 -export const TEST_BOOT_RETRY_INTERVAL_SECONDS = 60 -export const TEST_CONNECTION_TIMEOUT_SECONDS = 30 - -/** - * Boot Notification States - * Defined in OCPP 1.6 §4.2, OCPP 2.0.1 §B01-B03 - * @see tests/charging-station/OCPPSpecRequirements.md §7.4 - */ -export const BOOT_NOTIFICATION_STATE_ACCEPTED = 'Accepted' -export const BOOT_NOTIFICATION_STATE_PENDING = 'Pending' -export const BOOT_NOTIFICATION_STATE_REJECTED = 'Rejected' /** * Charging Station Information @@ -124,131 +40,7 @@ export const TEST_STATUS_CHARGE_POINT_SERIAL_NUMBER = 'TEST-STATUS-SN-001' export const TEST_STATUS_CHARGE_POINT_VENDOR = 'Test Status Vendor' /** - * Authorization Test Values - * RFID tags and authorization-related test data + * Connector IDs + * Test values for connector addressing */ -export const TEST_RFID_TAG_VALID = 'TAG-001' -export const TEST_RFID_TAG_VALID_2 = 'TAG-002' -export const TEST_RFID_TAG_UNAUTHORIZED = 'TAG-INVALID' - -/** - * Message IDs and UUIDs - * Test values for request/response correlation - */ -export const TEST_MESSAGE_ID_1 = 'msg-001' -export const TEST_MESSAGE_ID_2 = 'msg-002' -export const TEST_REQUEST_UUID = 'req-12345678-1234-1234-1234-123456789012' - -/** - * Error Codes - * OCPP RPC error codes used in tests - * @see tests/charging-station/OCPPSpecRequirements.md §6.1 - */ -export const ERROR_CODE_NOT_IMPLEMENTED = 'NotImplemented' -export const ERROR_CODE_NOT_SUPPORTED = 'NotSupported' -export const ERROR_CODE_INTERNAL_ERROR = 'InternalError' -export const ERROR_CODE_PROTOCOL_ERROR = 'ProtocolError' -export const ERROR_CODE_SECURITY_ERROR = 'SecurityError' -export const ERROR_CODE_FORMATION_VIOLATION = 'FormationViolation' -export const ERROR_CODE_PROPERTY_CONSTRAINT_VIOLATION = 'PropertyConstraintViolation' -export const ERROR_CODE_TYPE_CONSTRAINT_VIOLATION = 'TypeConstraintViolation' -export const ERROR_CODE_GENERIC_ERROR = 'GenericError' - -/** - * Configuration Parameters - OCPP 1.6 - * Standard OCPP 1.6 configuration keys (§7.2) - */ -export const CONFIG_KEY_HEARTBEAT_INTERVAL = 'HeartbeatInterval' -export const CONFIG_KEY_CONNECTION_TIMEOUT = 'ConnectionTimeOut' -export const CONFIG_KEY_METER_VALUE_SAMPLE_INTERVAL = 'MeterValueSampleInterval' -export const CONFIG_KEY_NUMBER_OF_CONNECTORS = 'NumberOfConnectors' -export const CONFIG_KEY_AUTHORIZE_REMOTE_TX_REQUESTS = 'AuthorizeRemoteTxRequests' -export const CONFIG_KEY_LOCAL_AUTHORIZE_OFFLINE = 'LocalAuthorizeOffline' -export const CONFIG_KEY_LOCAL_PRE_AUTHORIZE = 'LocalPreAuthorize' -export const CONFIG_KEY_WEBSOCKET_PING_INTERVAL = 'WebSocketPingInterval' -export const CONFIG_KEY_RESERVE_CONNECTOR_ZERO_SUPPORTED = 'ReserveConnectorZeroSupported' - -/** - * OCPP Message Type IDs - * SRPC message type identifiers - * @see tests/charging-station/OCPPSpecRequirements.md §5.2 - */ -export const SRPC_MESSAGE_TYPE_CALL = 2 -export const SRPC_MESSAGE_TYPE_CALLRESULT = 3 -export const SRPC_MESSAGE_TYPE_CALLERROR = 4 -export const SRPC_MESSAGE_TYPE_CALLRESULTERROR = 5 // OCPP 2.1+ -export const SRPC_MESSAGE_TYPE_SEND = 6 // OCPP 2.1+ (unconfirmed) - -/** - * WebSocket Subprotocols - * OCPP version-specific WebSocket subprotocol names - * @see tests/charging-station/OCPPSpecRequirements.md §5.3 - */ -export const WEBSOCKET_SUBPROTOCOL_OCPP_16 = 'ocpp1.6' -export const WEBSOCKET_SUBPROTOCOL_OCPP_20 = 'ocpp2.0' -export const WEBSOCKET_SUBPROTOCOL_OCPP_20_1 = 'ocpp2.0.1' -export const WEBSOCKET_SUBPROTOCOL_OCPP_21 = 'ocpp2.1' - -/** - * Timeout Values (milliseconds) - * Test timeout configurations - */ -export const TEST_TIMEOUT_SHORT_MS = 100 -export const TEST_TIMEOUT_MEDIUM_MS = 1000 -export const TEST_TIMEOUT_LONG_MS = 5000 -export const TEST_TIMEOUT_VERY_LONG_MS = 30000 - -/** - * Reservation Status Values - * Response statuses from ReserveNow - * @see tests/charging-station/OCPPSpecRequirements.md §10.3 - */ -export const RESERVATION_STATUS_ACCEPTED = 'Accepted' -export const RESERVATION_STATUS_FAULTED = 'Faulted' -export const RESERVATION_STATUS_OCCUPIED = 'Occupied' -export const RESERVATION_STATUS_REJECTED = 'Rejected' -export const RESERVATION_STATUS_UNAVAILABLE = 'Unavailable' - -/** - * Reservation IDs - * Test reservation identifiers - */ -export const TEST_RESERVATION_ID = 1 -export const TEST_RESERVATION_ID_2 = 2 - -/** - * Date/Time Constants - * Fixed test values for temporal testing - */ -export const TEST_ISO_TIMESTAMP = '2025-02-27T10:00:00Z' -export const TEST_TIMESTAMP_OFFSET_SECONDS = 3600 // 1 hour - -/** - * Meter Value Measurands - * OCPP standard measurand values - */ -export const MEASURAND_ENERGY_ACTIVE_IMPORT_REGISTER = 'Energy.Active.Import.Register' -export const MEASURAND_POWER_ACTIVE_IMPORT = 'Power.Active.Import' -export const MEASURAND_CURRENT_IMPORT = 'Current.Import' -export const MEASURAND_VOLTAGE = 'Voltage' -export const MEASURAND_TEMPERATURE = 'Temperature' - -/** - * Unit of Measurement - * Standard OCPP measurand units - */ -export const UNIT_KILOWATT_HOUR = 'kWh' -export const UNIT_WATT = 'W' -export const UNIT_AMPERE = 'A' -export const UNIT_VOLT = 'V' -export const UNIT_CELSIUS = 'Celsius' - -/** - * Test Configuration Defaults - * Safe defaults for test fixtures - */ -export const DEFAULT_OCPP_VERSION = OCPP_VERSION_16 -export const DEFAULT_CONNECTOR_COUNT = 2 -export const DEFAULT_POWER_KILO_WATT = 22 -export const DEFAULT_CURRENT_AMPERE = 32 -export const DEFAULT_VOLTAGE_VOLT = 230 +export const TEST_CONNECTOR_ID_VALID_INSTANCE = '1' diff --git a/tests/charging-station/helpers/StationHelpers.ts b/tests/charging-station/helpers/StationHelpers.ts index 065439c3..d3b6de4c 100644 --- a/tests/charging-station/helpers/StationHelpers.ts +++ b/tests/charging-station/helpers/StationHelpers.ts @@ -221,7 +221,6 @@ export function cleanupChargingStation (station: ChargingStation): void { * Create a connector status object with default values * * This is the canonical factory for creating ConnectorStatus objects in tests. - * This is the canonical factory for creating ConnectorStatus objects in tests. * @param _connectorId - Connector ID (unused, kept for API consistency) * @param options - Optional overrides for default values * @returns ConnectorStatus with default or customized values diff --git a/tests/charging-station/ui-server/UIServerTestUtils.ts b/tests/charging-station/ui-server/UIServerTestUtils.ts index 2ba77ec8..c726025b 100644 --- a/tests/charging-station/ui-server/UIServerTestUtils.ts +++ b/tests/charging-station/ui-server/UIServerTestUtils.ts @@ -84,6 +84,11 @@ export function createMockUIWebSocket (protocol = 'ui0.0.1'): MockWebSocket { return ws } +/** + * Create a mock UI server configuration with default values. + * @param overrides - Partial configuration to merge with defaults + * @returns Complete UIServerConfiguration for testing + */ export const createMockUIServerConfiguration = ( overrides?: Partial ): UIServerConfiguration => { @@ -99,6 +104,11 @@ export const createMockUIServerConfiguration = ( } } +/** + * Create a mock UI server configuration with basic authentication enabled. + * @param overrides - Partial configuration to merge with auth defaults + * @returns UIServerConfiguration with BASIC_AUTH enabled + */ export const createMockUIServerConfigurationWithAuth = ( overrides?: Partial ): UIServerConfiguration => { @@ -158,6 +168,11 @@ export class MockServerResponse extends EventEmitter { } } +/** + * Create a mock HTTP IncomingMessage for testing. + * @param overrides - Partial message properties to merge with defaults + * @returns IncomingMessage configured for testing + */ export const createMockIncomingMessage = ( overrides?: Partial ): IncomingMessage => { @@ -169,6 +184,12 @@ export const createMockIncomingMessage = ( } as IncomingMessage } +/** + * Create mock charging station data for UI server tests. + * @param hashId - Unique identifier for the charging station + * @param overrides - Partial data properties to merge with defaults + * @returns ChargingStationData configured for testing + */ export const createMockChargingStationData = ( hashId: string, overrides?: Partial @@ -185,6 +206,13 @@ export const createMockChargingStationData = ( } as ChargingStationData } +/** + * Create a protocol request tuple for UI server testing. + * @param uuid - Request identifier + * @param procedureName - OCPP procedure name + * @param payload - Request payload (defaults to empty object) + * @returns Protocol request tuple [uuid, procedureName, payload] + */ export const createProtocolRequest = ( uuid: UUIDv4, procedureName: ProcedureName, @@ -249,6 +277,11 @@ export const createMockUIService = ( }, }) +/** + * Wait for stream operations to flush. + * @param delayMs - Delay in milliseconds to wait + * @returns Promise that resolves after the delay + */ export const waitForStreamFlush = async (delayMs: number): Promise => { await new Promise(resolve => { setTimeout(resolve, delayMs) -- 2.43.0