12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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');
- });
- });
|