})
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)
})
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()
})
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
})
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
})
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)
})
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)
})
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
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) {
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)
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)
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)
})
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)
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
evsesCount?: number
}
- /** Number of EVSEs (enables EVSE mode if > 0) - deprecated, use evseConfiguration */
- evsesCount?: number
-
/** Heartbeat interval in seconds */
heartbeatInterval?: number
connectorDefaults,
connectorsCount = 2,
evseConfiguration,
- evsesCount = 0,
heartbeatInterval = TEST_HEARTBEAT_INTERVAL_SECONDS,
index = 1,
ocppConfiguration,
} = 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)}`)
/**
* 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
const effectiveOcppVersion = options.stationInfo?.ocppVersion ?? options.ocppVersion
return (
options.evseConfiguration?.evsesCount != null ||
- legacyEvsesCount > 0 ||
effectiveOcppVersion === OCPPVersion.VERSION_20 ||
effectiveOcppVersion === OCPPVersion.VERSION_201
)
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
-}
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<UIServerConfiguration>