connectorId: number,
connectorStatus: ConnectorStatus
): ConnectorStatusEnum => {
- let connectorBootStatus: ConnectorStatusEnum
if (
- connectorStatus.status == null &&
- (!chargingStation.isChargingStationAvailable() ||
- !chargingStation.isConnectorAvailable(connectorId))
+ !chargingStation.isChargingStationAvailable() ||
+ !chargingStation.isConnectorAvailable(connectorId)
) {
- connectorBootStatus = ConnectorStatusEnum.Unavailable
- } else if (connectorStatus.status == null && connectorStatus.bootStatus != null) {
- // Set boot status in template at startup
- connectorBootStatus = connectorStatus.bootStatus
- } else if (connectorStatus.status != null) {
- // Set previous status at startup
- connectorBootStatus = connectorStatus.status
- } else {
- // Set default status
- connectorBootStatus = ConnectorStatusEnum.Available
+ return ConnectorStatusEnum.Unavailable
+ }
+ if (connectorStatus.transactionStarted === true && connectorStatus.status != null) {
+ return connectorStatus.status
+ }
+ if (connectorStatus.bootStatus != null) {
+ return connectorStatus.bootStatus
}
- return connectorBootStatus
+ return ConnectorStatusEnum.Available
}
export const checkTemplate = (
checkConfiguration,
checkStationInfoConnectorStatus,
checkTemplate,
+ getBootConnectorStatus,
getChargingStationId,
getHashId,
getMaxNumberOfEvses,
} from '../../src/charging-station/Helpers.js'
import { BaseError } from '../../src/exception/index.js'
import {
+ AvailabilityType,
type ChargingStationConfiguration,
type ChargingStationInfo,
type ChargingStationTemplate,
expect(warnMock.mock.calls.length).toBe(1)
expect(connectorStatus.status).toBeUndefined()
})
+
+ await it('Verify getBootConnectorStatus() - default to Available when no bootStatus', () => {
+ const chargingStation = createChargingStation({ baseName, connectorsCount: 2 })
+ const connectorStatus = {} as ConnectorStatus
+ expect(getBootConnectorStatus(chargingStation, 1, connectorStatus)).toBe(
+ ConnectorStatusEnum.Available
+ )
+ })
+
+ await it('Verify getBootConnectorStatus() - use bootStatus from template', () => {
+ const chargingStation = createChargingStation({ baseName, connectorsCount: 2 })
+ const connectorStatus = {
+ bootStatus: ConnectorStatusEnum.Unavailable,
+ } as ConnectorStatus
+ expect(getBootConnectorStatus(chargingStation, 1, connectorStatus)).toBe(
+ ConnectorStatusEnum.Unavailable
+ )
+ })
+
+ await it('Verify getBootConnectorStatus() - charging station unavailable overrides bootStatus', () => {
+ const chargingStation = createChargingStation({
+ baseName,
+ connectorDefaults: { availability: AvailabilityType.Inoperative },
+ connectorsCount: 2,
+ })
+ const connectorStatus = {
+ bootStatus: ConnectorStatusEnum.Available,
+ } as ConnectorStatus
+ expect(getBootConnectorStatus(chargingStation, 1, connectorStatus)).toBe(
+ ConnectorStatusEnum.Unavailable
+ )
+ })
+
+ await it('Verify getBootConnectorStatus() - connector unavailable overrides bootStatus', () => {
+ const chargingStation = createChargingStation({
+ baseName,
+ connectorDefaults: { availability: AvailabilityType.Inoperative },
+ connectorsCount: 2,
+ })
+ const connectorStatus = {
+ availability: AvailabilityType.Inoperative,
+ bootStatus: ConnectorStatusEnum.Available,
+ } as ConnectorStatus
+ expect(getBootConnectorStatus(chargingStation, 1, connectorStatus)).toBe(
+ ConnectorStatusEnum.Unavailable
+ )
+ })
+
+ await it('Verify getBootConnectorStatus() - transaction in progress restores previous status', () => {
+ const chargingStation = createChargingStation({ baseName, connectorsCount: 2 })
+ const connectorStatus = {
+ bootStatus: ConnectorStatusEnum.Available,
+ status: ConnectorStatusEnum.Charging,
+ transactionStarted: true,
+ } as ConnectorStatus
+ expect(getBootConnectorStatus(chargingStation, 1, connectorStatus)).toBe(
+ ConnectorStatusEnum.Charging
+ )
+ })
+
+ await it('Verify getBootConnectorStatus() - no transaction uses bootStatus over previous status', () => {
+ const chargingStation = createChargingStation({ baseName, connectorsCount: 2 })
+ const connectorStatus = {
+ bootStatus: ConnectorStatusEnum.Available,
+ status: ConnectorStatusEnum.Charging,
+ transactionStarted: false,
+ } as ConnectorStatus
+ expect(getBootConnectorStatus(chargingStation, 1, connectorStatus)).toBe(
+ ConnectorStatusEnum.Available
+ )
+ })
})