test(companion): cover heartbeat loop state reset on restart
This commit is contained in:
@@ -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();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user