Closer/functions/dist/backup/onRestoreRequested.test.js

35 lines
2.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const onRestoreRequested_1 = require("./onRestoreRequested");
// Both helpers are pure decisions extracted from the restore triggers, so no firebase-admin mock is needed.
describe('selfAlertAllowed (self-alert spam dedupe)', () => {
const now = 1000000000000;
it('allows the alert when no previous alert timestamp exists', () => {
expect((0, onRestoreRequested_1.selfAlertAllowed)(undefined, now)).toBe(true);
expect((0, onRestoreRequested_1.selfAlertAllowed)(null, now)).toBe(true);
expect((0, onRestoreRequested_1.selfAlertAllowed)('not-a-number', now)).toBe(true);
});
it('suppresses a second alert inside the dedupe window', () => {
expect((0, onRestoreRequested_1.selfAlertAllowed)(now - (onRestoreRequested_1.SELF_ALERT_DEDUPE_MS - 1), now)).toBe(false);
expect((0, onRestoreRequested_1.selfAlertAllowed)(now - 1, now)).toBe(false);
});
it('allows again once the window has elapsed', () => {
expect((0, onRestoreRequested_1.selfAlertAllowed)(now - onRestoreRequested_1.SELF_ALERT_DEDUPE_MS, now)).toBe(true);
expect((0, onRestoreRequested_1.selfAlertAllowed)(now - (onRestoreRequested_1.SELF_ALERT_DEDUPE_MS + 5000), now)).toBe(true);
});
});
describe('isRestoreReadyTransition (completion-alert guard)', () => {
it('fires only on the REQUESTED→READY edge', () => {
expect((0, onRestoreRequested_1.isRestoreReadyTransition)('REQUESTED', 'READY')).toBe(true);
});
it('does not fire when already READY (no repeat on unrelated updates)', () => {
expect((0, onRestoreRequested_1.isRestoreReadyTransition)('READY', 'READY')).toBe(false);
});
it('does not fire for non-READY outcomes', () => {
expect((0, onRestoreRequested_1.isRestoreReadyTransition)('REQUESTED', 'DECLINED')).toBe(false);
expect((0, onRestoreRequested_1.isRestoreReadyTransition)('REQUESTED', 'EXPIRED')).toBe(false);
expect((0, onRestoreRequested_1.isRestoreReadyTransition)('READY', 'RESTORED')).toBe(false);
expect((0, onRestoreRequested_1.isRestoreReadyTransition)(undefined, undefined)).toBe(false);
});
});
//# sourceMappingURL=onRestoreRequested.test.js.map