import { SEVERITY_ORDER, rulesFor, subscribedEventTypes } from './notification-rules'; describe('notification rules', () => { it('ordoneaza severitatile de la SYSTEM la CRITICAL', () => { expect(SEVERITY_ORDER.SYSTEM).toBeLessThan(SEVERITY_ORDER.INFORMATION); expect(SEVERITY_ORDER.INFORMATION).toBeLessThan(SEVERITY_ORDER.ACTION_REQUIRED); expect(SEVERITY_ORDER.ACTION_REQUIRED).toBeLessThan(SEVERITY_ORDER.CRITICAL); }); it('nu intoarce reguli pentru evenimente la care nimeni nu s-a abonat', () => { expect(rulesFor('inventat.nu_exista')).toEqual([]); }); it('fiecare regula are o cheie de deduplicare pozitiva', () => { for (const eventType of subscribedEventTypes()) { for (const rule of rulesFor(eventType)) { expect(rule.deduplicationWindowMinutes).toBeGreaterThan(0); } } }); it('regulile agregabile au fereastra de agregare mai mica sau egala cu cea de dedup', () => { // Altfel s-ar crea o notificare noua inainte sa se poata agrega in cea veche. for (const eventType of subscribedEventTypes()) { for (const rule of rulesFor(eventType)) { if (rule.aggregationWindowMinutes) { expect(rule.aggregationWindowMinutes).toBeLessThanOrEqual( rule.deduplicationWindowMinutes, ); } } } }); it('nu notifica actorul despre propria actiune, in afara de evenimentele de sistem', () => { for (const rule of rulesFor('task.created')) { expect(rule.notifyActor).toBe(false); } }); });