refactor(core): Centralize CronJob management (#10033)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2024-07-16 20:42:48 +02:00
committed by GitHub
parent 36b314d031
commit 09f2cf9eaf
18 changed files with 730 additions and 429 deletions

View File

@@ -1,4 +1,5 @@
import { toCronExpression } from '@/Cron';
import type { CronExpression } from '@/Interfaces';
describe('Cron', () => {
describe('toCronExpression', () => {
@@ -6,7 +7,7 @@ describe('Cron', () => {
const expression = toCronExpression({
mode: 'everyMinute',
});
expect(expression).toMatch(/^[1-6]?[0-9] \* \* \* \* \*$/);
expect(expression).toMatch(/^[1-5]?[0-9] \* \* \* \* \*$/);
});
test('should generate a valid cron for `everyHour` triggers', () => {
@@ -14,7 +15,7 @@ describe('Cron', () => {
mode: 'everyHour',
minute: 11,
});
expect(expression).toMatch(/^[1-6]?[0-9] 11 \* \* \* \*$/);
expect(expression).toMatch(/^[1-5]?[0-9] 11 \* \* \* \*$/);
});
test('should generate a valid cron for `everyX[minutes]` triggers', () => {
@@ -23,7 +24,7 @@ describe('Cron', () => {
unit: 'minutes',
value: 42,
});
expect(expression).toMatch(/^[1-6]?[0-9] \*\/42 \* \* \* \*$/);
expect(expression).toMatch(/^[1-5]?[0-9] \*\/42 \* \* \* \*$/);
});
test('should generate a valid cron for `everyX[hours]` triggers', () => {
@@ -32,7 +33,7 @@ describe('Cron', () => {
unit: 'hours',
value: 3,
});
expect(expression).toMatch(/^[1-6]?[0-9] 0 \*\/3 \* \* \*$/);
expect(expression).toMatch(/^[1-5]?[0-9] [1-5]?[0-9] \*\/3 \* \* \*$/);
});
test('should generate a valid cron for `everyDay` triggers', () => {
@@ -41,7 +42,7 @@ describe('Cron', () => {
hour: 13,
minute: 17,
});
expect(expression).toMatch(/^[1-6]?[0-9] 17 13 \* \* \*$/);
expect(expression).toMatch(/^[1-5]?[0-9] 17 13 \* \* \*$/);
});
test('should generate a valid cron for `everyWeek` triggers', () => {
@@ -51,7 +52,7 @@ describe('Cron', () => {
minute: 17,
weekday: 4,
});
expect(expression).toMatch(/^[1-6]?[0-9] 17 13 \* \* 4$/);
expect(expression).toMatch(/^[1-5]?[0-9] 17 13 \* \* 4$/);
});
test('should generate a valid cron for `everyMonth` triggers', () => {
@@ -61,13 +62,13 @@ describe('Cron', () => {
minute: 17,
dayOfMonth: 12,
});
expect(expression).toMatch(/^[1-6]?[0-9] 17 13 12 \* \*$/);
expect(expression).toMatch(/^[1-5]?[0-9] 17 13 12 \* \*$/);
});
test('should trim custom cron expressions', () => {
const expression = toCronExpression({
mode: 'custom',
cronExpression: ' 0 9-17 * * * ',
cronExpression: ' 0 9-17 * * * ' as CronExpression,
});
expect(expression).toEqual('0 9-17 * * *');
});