From b70d144699495fece72fd396280c2dcf2178d2a6 Mon Sep 17 00:00:00 2001 From: Renato Alcara Date: Sun, 26 Apr 2026 22:50:55 -0300 Subject: [PATCH] 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. --- src/__tests__/Utils/unified-session.test.ts | 28 +++++++-------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/src/__tests__/Utils/unified-session.test.ts b/src/__tests__/Utils/unified-session.test.ts index 3f3a17b9..4c3ee642 100644 --- a/src/__tests__/Utils/unified-session.test.ts +++ b/src/__tests__/Utils/unified-session.test.ts @@ -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() }) })