feat(companion): add heartbeat success observability state
This commit is contained in:
@@ -96,6 +96,24 @@ describe('CompanionHeartbeatLoop', () => {
|
||||
loop.stop();
|
||||
});
|
||||
|
||||
it('tracks successCount and lastSuccessAt in loop state', async () => {
|
||||
const publishHeartbeat = vi.fn(async () => buildStatusResult());
|
||||
const loop = new CompanionHeartbeatLoop({ publishHeartbeat }, { intervalMs: 300 });
|
||||
|
||||
expect(loop.successCount).toBe(0);
|
||||
expect(loop.lastSuccessAt).toBeNull();
|
||||
|
||||
loop.start();
|
||||
await Promise.resolve();
|
||||
|
||||
expect(loop.successCount).toBe(1);
|
||||
expect(loop.lastSuccessAt).not.toBeNull();
|
||||
expect(loop.getState().successCount).toBe(1);
|
||||
expect(loop.getState().lastSuccessAt).toBe(loop.lastSuccessAt);
|
||||
|
||||
loop.stop();
|
||||
});
|
||||
|
||||
it('passes buildHeartbeat payload into publishHeartbeat', async () => {
|
||||
const publishHeartbeat = vi.fn(async () => buildStatusResult());
|
||||
const buildHeartbeat = vi.fn(() => ({ statusText: 'loop', powerSource: 'ac' as const }));
|
||||
@@ -193,6 +211,8 @@ describe('CompanionHeartbeatLoop', () => {
|
||||
expect(loop.running).toBe(false);
|
||||
expect(loop.getState()).toEqual({
|
||||
running: false,
|
||||
successCount: 1,
|
||||
lastSuccessAt: expect.any(Number),
|
||||
failureCount: 0,
|
||||
lastFailure: null,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user