test(companion): cover heartbeat loop state reset on restart

This commit is contained in:
William Valentin
2026-02-16 19:45:30 -08:00
parent 36ad56a6c6
commit 5277fed220
2 changed files with 43 additions and 0 deletions
+32
View File
@@ -234,4 +234,36 @@ describe('CompanionHeartbeatLoop', () => {
loop.stop();
});
it('resets success and failure state when restarted', async () => {
const publishHeartbeat = vi
.fn<() => Promise<NodeStatusSetResult>>()
.mockResolvedValueOnce(buildStatusResult())
.mockRejectedValueOnce(new Error('transient'))
.mockResolvedValue(buildStatusResult());
const loop = new CompanionHeartbeatLoop({ publishHeartbeat }, { intervalMs: 500 });
loop.start();
await Promise.resolve();
expect(loop.successCount).toBe(1);
expect(loop.failureCount).toBe(0);
await vi.advanceTimersByTimeAsync(500);
expect(loop.failureCount).toBe(1);
expect(loop.lastFailure?.message).toBe('transient');
loop.stop();
loop.start(false);
expect(loop.successCount).toBe(0);
expect(loop.lastSuccessAt).toBeNull();
expect(loop.failureCount).toBe(0);
expect(loop.lastFailure).toBeNull();
await vi.advanceTimersByTimeAsync(500);
expect(loop.successCount).toBe(1);
expect(loop.failureCount).toBe(0);
loop.stop();
});
});