]> Piment Noir Git Repositories - e-mobility-charging-stations-simulator.git/commitdiff
refactor(tests): named cosPhi constants, accurate mock call types, remove cast workar...
authorJérôme Benoit <jerome.benoit@sap.com>
Fri, 6 Mar 2026 22:32:58 +0000 (23:32 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Fri, 6 Mar 2026 22:32:58 +0000 (23:32 +0100)
tests/helpers/TestLifecycleHelpers.ts
tests/utils/ElectricUtils.test.ts
tests/utils/ErrorUtils.test.ts

index c2a6fcbe0d20f757bfbd45a2ed4a8f6f338ffcdf..0721a629d930eafe7d9e074b1833a2c937ebc1f1 100644 (file)
@@ -35,17 +35,17 @@ import { MockIdTagsCache, MockSharedLRUCache } from '../charging-station/mocks/M
  * Result type for console mocks
  */
 export interface ConsoleMockResult {
-  errorMock: { mock: { calls: unknown[][] } }
-  infoMock: { mock: { calls: unknown[][] } }
-  warnMock: { mock: { calls: unknown[][] } }
+  errorMock: { mock: { calls: MockCall[] } }
+  infoMock: { mock: { calls: MockCall[] } }
+  warnMock: { mock: { calls: MockCall[] } }
 }
 
 /**
  * Result type for logger mocks
  */
 export interface LoggerMockResult {
-  errorMock: { mock: { calls: unknown[][] } }
-  warnMock: { mock: { calls: unknown[][] } }
+  errorMock: { mock: { calls: MockCall[] } }
+  warnMock: { mock: { calls: MockCall[] } }
 }
 
 /**
@@ -63,12 +63,19 @@ export interface TimerHelperOptions {
   apis?: MockableTimerAPI[]
 }
 
+/**
+ * Single mock function call record matching Node.js test runner runtime shape
+ */
+interface MockCall {
+  arguments: unknown[]
+}
+
 /**
  * Mock context type for Node.js test module
  */
 interface MockContext {
   mock: {
-    method: (object: object, methodName: string) => { mock: { calls: unknown[][] } }
+    method: (object: object, methodName: string) => { mock: { calls: MockCall[] } }
   }
 }
 
index 3be19c3a2f33c2e3470204b8704b3a1252ef0b6c..997861628e748dfad899491134140d61b0f60108 100644 (file)
@@ -8,6 +8,10 @@ import { afterEach, describe, it } from 'node:test'
 import { ACElectricUtils, DCElectricUtils } from '../../src/utils/ElectricUtils.js'
 import { standardCleanup } from '../helpers/TestLifecycleHelpers.js'
 
+const COS_PHI_RESIDENTIAL = 0.85
+const COS_PHI_POOR = 0.9
+const COS_PHI_INDUSTRIAL = 0.95
+
 await describe('ElectricUtils', async () => {
   afterEach(() => {
     standardCleanup()
@@ -47,7 +51,7 @@ await describe('ElectricUtils', async () => {
     expect(ACElectricUtils.amperagePerPhaseFromPower(-1, 690, 230)).toBe(0)
   })
   await it('should round AC power per phase with non-unity cosPhi', () => {
-    expect(ACElectricUtils.powerPerPhase(230, 10, 0.85)).toBe(1955)
+    expect(ACElectricUtils.powerPerPhase(230, 10, COS_PHI_RESIDENTIAL)).toBe(1955)
   })
   await it('should round DC amperage when power is not evenly divisible by voltage', () => {
     expect(DCElectricUtils.amperage(100, 3)).toBe(33)
@@ -86,12 +90,10 @@ await describe('ElectricUtils', async () => {
   })
 
   await it('should handle industrial cosPhi values for AC calculations', () => {
-    // cosPhi = 0.95 (typical industrial)
-    expect(ACElectricUtils.powerPerPhase(230, 32, 0.95)).toBe(6992)
-    expect(ACElectricUtils.powerTotal(3, 230, 32, 0.95)).toBe(20976)
-    expect(ACElectricUtils.amperageTotalFromPower(6992, 230, 0.95)).toBe(32)
-    // cosPhi = 0.9
-    expect(ACElectricUtils.powerPerPhase(230, 32, 0.9)).toBe(6624)
-    expect(ACElectricUtils.amperageTotalFromPower(6624, 230, 0.9)).toBe(32)
+    expect(ACElectricUtils.powerPerPhase(230, 32, COS_PHI_INDUSTRIAL)).toBe(6992)
+    expect(ACElectricUtils.powerTotal(3, 230, 32, COS_PHI_INDUSTRIAL)).toBe(20976)
+    expect(ACElectricUtils.amperageTotalFromPower(6992, 230, COS_PHI_INDUSTRIAL)).toBe(32)
+    expect(ACElectricUtils.powerPerPhase(230, 32, COS_PHI_POOR)).toBe(6624)
+    expect(ACElectricUtils.amperageTotalFromPower(6624, 230, COS_PHI_POOR)).toBe(32)
   })
 })
index 83228f59e53d6692509e477e7265ede28a230a6e..fc27f0049ace77efe176f0a84d8bc5ee3a025307 100644 (file)
@@ -114,8 +114,7 @@ await describe('ErrorUtils', async () => {
     }
     expect(warnMock.mock.calls.length).toBe(errorCodes.length)
     for (let i = 0; i < errorCodes.length; i++) {
-      const call = warnMock.mock.calls[i] as unknown as { arguments: unknown[] }
-      const logMessage = String(call.arguments[0]).toLowerCase()
+      const logMessage = String(warnMock.mock.calls[i].arguments[0]).toLowerCase()
       expect(logMessage.includes(errorCodes[i].expectedSubstring)).toBe(true)
     }
   })