mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
68 lines
2.5 KiB
TypeScript
68 lines
2.5 KiB
TypeScript
import {shouldUse24Hours} from 'sentry/utils/dates';
|
|
|
|
import type {MonitorConfig} from './types';
|
|
import {ScheduleType} from './types';
|
|
import {crontabAsText, scheduleAsText} from './utils';
|
|
|
|
jest.mock('sentry/utils/dates');
|
|
|
|
describe('crontabAsText', function () {
|
|
beforeEach(() => {
|
|
jest.mocked(shouldUse24Hours).mockReturnValue(false);
|
|
});
|
|
|
|
it('translates simple crontab', function () {
|
|
expect(crontabAsText('* * * * *')).toBe('Every minute');
|
|
expect(crontabAsText('10 * * * *')).toBe('At 10 minutes past the hour');
|
|
});
|
|
|
|
it('handles 24 hour clock', function () {
|
|
expect(crontabAsText('0 5/* * 1-5 *')).toBe(
|
|
'At 0 minutes past the hour, every * hours, starting at 05:00 AM, January through May'
|
|
);
|
|
|
|
jest.mocked(shouldUse24Hours).mockReturnValue(true);
|
|
|
|
expect(crontabAsText('0 5/* * 1-5 *')).toBe(
|
|
'At 0 minutes past the hour, every * hours, starting at 05:00, January through May'
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('scheduleAsText', function () {
|
|
it('uses crontabAsText', function () {
|
|
const config: MonitorConfig = {
|
|
checkin_margin: 0,
|
|
max_runtime: 0,
|
|
timezone: 'utc',
|
|
schedule_type: ScheduleType.CRONTAB,
|
|
schedule: '10 * * * *',
|
|
};
|
|
expect(scheduleAsText(config)).toBe('At 10 minutes past the hour');
|
|
});
|
|
|
|
it('translates interval conigs', function () {
|
|
const config: MonitorConfig = {
|
|
checkin_margin: 0,
|
|
max_runtime: 0,
|
|
timezone: 'utc',
|
|
schedule_type: ScheduleType.INTERVAL,
|
|
schedule: [1, 'minute'],
|
|
};
|
|
|
|
expect(scheduleAsText({...config, schedule: [1, 'minute']})).toBe('Every minute');
|
|
expect(scheduleAsText({...config, schedule: [1, 'hour']})).toBe('Every hour');
|
|
expect(scheduleAsText({...config, schedule: [1, 'day']})).toBe('Every day');
|
|
expect(scheduleAsText({...config, schedule: [1, 'week']})).toBe('Every week');
|
|
expect(scheduleAsText({...config, schedule: [1, 'month']})).toBe('Every month');
|
|
expect(scheduleAsText({...config, schedule: [1, 'year']})).toBe('Every year');
|
|
|
|
expect(scheduleAsText({...config, schedule: [5, 'minute']})).toBe('Every 5 minutes');
|
|
expect(scheduleAsText({...config, schedule: [5, 'hour']})).toBe('Every 5 hours');
|
|
expect(scheduleAsText({...config, schedule: [5, 'day']})).toBe('Every 5 days');
|
|
expect(scheduleAsText({...config, schedule: [5, 'week']})).toBe('Every 5 weeks');
|
|
expect(scheduleAsText({...config, schedule: [5, 'month']})).toBe('Every 5 months');
|
|
expect(scheduleAsText({...config, schedule: [5, 'year']})).toBe('Every 5 years');
|
|
});
|
|
});
|