43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
getBackupHealthSnapshot,
|
|
initBackupHealth,
|
|
markBackupFailure,
|
|
markBackupSuccess,
|
|
} from './status.js';
|
|
|
|
describe('backup status tracker', () => {
|
|
it('tracks failures and resets on success', () => {
|
|
initBackupHealth(true);
|
|
expect(getBackupHealthSnapshot()).toMatchObject({
|
|
enabled: true,
|
|
hasRun: false,
|
|
consecutiveFailures: 0,
|
|
});
|
|
|
|
markBackupFailure('upload failed', 123);
|
|
expect(getBackupHealthSnapshot()).toMatchObject({
|
|
enabled: true,
|
|
hasRun: true,
|
|
consecutiveFailures: 1,
|
|
lastFailureAt: 123,
|
|
lastError: 'upload failed',
|
|
});
|
|
|
|
markBackupFailure('upload failed again', 456);
|
|
expect(getBackupHealthSnapshot()).toMatchObject({
|
|
consecutiveFailures: 2,
|
|
lastFailureAt: 456,
|
|
lastError: 'upload failed again',
|
|
});
|
|
|
|
markBackupSuccess(789);
|
|
expect(getBackupHealthSnapshot()).toMatchObject({
|
|
hasRun: true,
|
|
consecutiveFailures: 0,
|
|
lastSuccessAt: 789,
|
|
lastError: undefined,
|
|
});
|
|
});
|
|
});
|