refactor(tests): adapt unified-session tests to no-circuit-breaker world

- Remove circuitBreakerTrips from the prometheus-metrics mock (metric
  no longer emitted now that telemetry path skips the circuit breaker).
- Drop the enableCircuitBreaker option from the default test setup.
- Replace the "with CircuitBreaker" describe block with an equivalent
  suite that asserts the same observable behavior (single send per call,
  failures swallowed gracefully) without requiring the option.

All 31 unified-session tests pass.
This commit is contained in:
Renato Alcara
2026-04-26 22:50:55 -03:00
parent d9e0e0e0af
commit b70d144699
+9 -19
View File
@@ -29,8 +29,7 @@ const TimeMs = {
jest.mock('../../Utils/prometheus-metrics.js', () => ({
metrics: {
socketEvents: { inc: jest.fn() },
errors: { inc: jest.fn() },
circuitBreakerTrips: { inc: jest.fn() }
errors: { inc: jest.fn() }
}
}))
@@ -59,7 +58,6 @@ describe('UnifiedSessionManager', () => {
manager = createUnifiedSessionManager({
enabled: true,
logger: mockLogger as any,
enableCircuitBreaker: false, // Disable for simpler testing
sendNode: mockSendNode
})
})
@@ -356,7 +354,11 @@ describe('shouldEnableUnifiedSession', () => {
})
})
describe('UnifiedSessionManager with CircuitBreaker', () => {
describe('UnifiedSessionManager — non-critical send semantics', () => {
// The previous "with CircuitBreaker" suite is gone — telemetry no longer
// uses a circuit breaker. Verify equivalent behavior still holds:
// failures are swallowed (telemetry is non-critical) and don't propagate.
let manager: UnifiedSessionManager
let mockSendNode: MockSendNode
@@ -366,7 +368,6 @@ describe('UnifiedSessionManager with CircuitBreaker', () => {
manager = createUnifiedSessionManager({
enabled: true,
logger: createMockLogger() as any,
enableCircuitBreaker: true,
sendNode: mockSendNode
})
})
@@ -375,24 +376,13 @@ describe('UnifiedSessionManager with CircuitBreaker', () => {
manager.destroy()
})
it('should work with circuit breaker enabled', async () => {
it('should send telemetry once per call', async () => {
await manager.send('login')
expect(mockSendNode).toHaveBeenCalledTimes(1)
})
it('should handle circuit breaker failures gracefully', async () => {
// Make send fail multiple times to trigger circuit breaker
let callCount = 0
mockSendNode.mockImplementation(async () => {
callCount++
if (callCount <= 3) {
throw new Error(`Fail ${callCount}`)
}
})
// These should not throw even with failures
await expect(manager.send('login')).resolves.toBeUndefined()
await expect(manager.send('login')).resolves.toBeUndefined()
it('should swallow send failures gracefully (telemetry is non-critical)', async () => {
mockSendNode.mockRejectedValueOnce(new Error('boom'))
await expect(manager.send('login')).resolves.toBeUndefined()
})
})