const utils = require('../utils') const plugins = { sendMessage: rec => { return rec }, } const alertRec = { devices: { f02af604ca9010bd9ae04c427a24da90130da10d355f0a9b235886a89008fc05: { balanceAlerts: [], deviceAlerts: [ { code: 'PING', age: 1605532263169, machineName: 'Abc123' }, ], }, }, deviceNames: { f02af604ca9010bd9ae04c427a24da90130da10d355f0a9b235886a89008fc05: 'Abc123', }, general: [], } const notifications = { sms: { active: true, errors: true }, email: { active: false, errors: false }, } describe('buildAlertFingerprint', () => { test('Build alert fingerprint returns null if no sms or email alerts', () => { expect( utils.buildAlertFingerprint( { devices: {}, deviceNames: {}, general: [], }, notifications, ), ).toBe(null) }) test('Build alert fingerprint returns null if sms and email are disabled', () => { expect( utils.buildAlertFingerprint(alertRec, { sms: { active: false, errors: true }, email: { active: false, errors: false }, }), ).toBe(null) }) test('Build alert fingerprint returns hash if email or [sms] are enabled and there are alerts in alertrec', () => { expect( typeof utils.buildAlertFingerprint(alertRec, { sms: { active: true, errors: true }, email: { active: false, errors: false }, }), ).toBe('string') }) test('Build alert fingerprint returns hash if [email] or sms are enabled and there are alerts in alertrec', () => { expect( typeof utils.buildAlertFingerprint(alertRec, { sms: { active: false, errors: false }, email: { active: true, errors: true }, }), ).toBe('string') }) }) describe('sendNoAlerts', () => { test('Send no alerts returns empty object with sms and email disabled', () => { expect(utils.sendNoAlerts(plugins, false, false)).toEqual({}) }) test('Send no alerts returns object with sms prop with sms only enabled', () => { expect(utils.sendNoAlerts(plugins, true, false)).toEqual({ sms: { body: '[Lamassu] All clear', }, }) }) test('Send no alerts returns object with sms and email prop with both enabled', () => { expect(utils.sendNoAlerts(plugins, true, true)).toEqual({ email: { body: 'No errors are reported for your machines.', subject: '[Lamassu] All clear', }, sms: { body: '[Lamassu] All clear', }, }) }) test('Send no alerts returns object with email prop if only email is enabled', () => { expect(utils.sendNoAlerts(plugins, false, true)).toEqual({ email: { body: 'No errors are reported for your machines.', subject: '[Lamassu] All clear', }, }) }) })