import { quietHoursDelay } from './quiet-hours'; const at = (hourUtc: number) => new Date(Date.UTC(2026, 6, 29, hourUtc, 30, 0)); describe('quietHoursDelay', () => { it('livreaza imediat cand userul n-a configurat quiet hours', () => { expect( quietHoursDelay({ start: null, end: null, severity: 'INFORMATION', criticalBypasses: true, now: at(3) }), ).toBeNull(); }); it('trateaza start === end ca fiind fara quiet hours, nu ca 24h de liniste', () => { expect( quietHoursDelay({ start: 9, end: 9, severity: 'INFORMATION', criticalBypasses: true, now: at(9) }), ).toBeNull(); }); describe('fereastra simpla, in aceeasi zi (9 -> 17)', () => { it('amana pana la sfarsitul ferestrei cand suntem inauntru', () => { const result = quietHoursDelay({ start: 9, end: 17, severity: 'INFORMATION', criticalBypasses: true, now: at(13) }); expect(result?.toISOString()).toBe('2026-07-29T17:00:00.000Z'); }); it('livreaza imediat inainte de inceputul ferestrei', () => { expect( quietHoursDelay({ start: 9, end: 17, severity: 'INFORMATION', criticalBypasses: true, now: at(8) }), ).toBeNull(); }); it('livreaza imediat exact la ora de sfarsit -- capatul e exclusiv', () => { expect( quietHoursDelay({ start: 9, end: 17, severity: 'INFORMATION', criticalBypasses: true, now: at(17) }), ).toBeNull(); }); }); describe('fereastra care traverseaza miezul noptii (22 -> 7)', () => { it('seara amana pana dimineata ZILEI URMATOARE', () => { const result = quietHoursDelay({ start: 22, end: 7, severity: 'INFORMATION', criticalBypasses: true, now: at(23) }); expect(result?.toISOString()).toBe('2026-07-30T07:00:00.000Z'); }); it('noaptea tarziu amana pana dimineata ACELEIASI zi', () => { const result = quietHoursDelay({ start: 22, end: 7, severity: 'INFORMATION', criticalBypasses: true, now: at(3) }); expect(result?.toISOString()).toBe('2026-07-29T07:00:00.000Z'); }); it('la pranz livreaza imediat -- suntem in afara ferestrei', () => { expect( quietHoursDelay({ start: 22, end: 7, severity: 'INFORMATION', criticalBypasses: true, now: at(12) }), ).toBeNull(); }); }); describe('CRITICAL', () => { it('depaseste quiet hours cand politica userului permite', () => { expect( quietHoursDelay({ start: 22, end: 7, severity: 'CRITICAL', criticalBypasses: true, now: at(3) }), ).toBeNull(); }); it('respecta quiet hours cand userul a dezactivat bypass-ul', () => { // Nu presupunem ca "critical" invinge mereu preferinta explicita a userului. const result = quietHoursDelay({ start: 22, end: 7, severity: 'CRITICAL', criticalBypasses: false, now: at(3) }); expect(result?.toISOString()).toBe('2026-07-29T07:00:00.000Z'); }); }); });