From 6952ca325ace7894011b980d42ee94013317a794 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Tue, 18 Feb 2025 14:01:32 +0000 Subject: [PATCH] Respond to Adri's feedback. --- packages/backend-core/src/queue/inMemoryQueue.ts | 7 +++---- .../src/automations/tests/triggers/cron.spec.ts | 4 ++-- .../src/automations/tests/utilities/index.ts | 15 +++++++++------ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/backend-core/src/queue/inMemoryQueue.ts b/packages/backend-core/src/queue/inMemoryQueue.ts index daf9efa054..842d3243bc 100644 --- a/packages/backend-core/src/queue/inMemoryQueue.ts +++ b/packages/backend-core/src/queue/inMemoryQueue.ts @@ -40,6 +40,7 @@ export interface TestQueueMessage extends Partial> { queue: Queue data: any opts?: JobOptions + manualTrigger?: boolean } /** @@ -90,10 +91,9 @@ export class InMemoryQueue implements Partial> { this._emitter.on("message", async msg => { const message = cloneDeep(msg) - const isManualTrigger = (message as any).manualTrigger === true // For the purpose of testing, don't trigger cron jobs immediately. // Require the test to trigger them manually with timestamps. - if (!isManualTrigger && message.opts?.repeat != null) { + if (!message.manualTrigger && message.opts?.repeat != null) { return } @@ -216,8 +216,7 @@ export class InMemoryQueue implements Partial> { manualTrigger(id: JobId) { for (const message of this._messages) { if (message.id === id) { - const forceMessage = { ...message, manualTrigger: true } - this._emitter.emit("message", forceMessage) + this._emitter.emit("message", { ...message, manualTrigger: true }) return } } diff --git a/packages/server/src/automations/tests/triggers/cron.spec.ts b/packages/server/src/automations/tests/triggers/cron.spec.ts index b7a9f1f213..90d29a60c1 100644 --- a/packages/server/src/automations/tests/triggers/cron.spec.ts +++ b/packages/server/src/automations/tests/triggers/cron.spec.ts @@ -9,7 +9,7 @@ import { import { automations } from "@budibase/pro" import { AutomationData, AutomationStatus } from "@budibase/types" import { MAX_AUTOMATION_RECURRING_ERRORS } from "../../../constants" -import { Job } from "bull" +import { queue } from "@budibase/backend-core" describe("cron trigger", () => { const config = new TestConfiguration() @@ -80,7 +80,7 @@ describe("cron trigger", () => { ) await config.withProdApp(async () => { - let results: Job[] = [] + let results: queue.TestQueueMessage[] = [] const removed = await captureAutomationRemovals(automation, async () => { results = await captureAutomationResults(automation, async () => { for (let i = 0; i < MAX_AUTOMATION_RECURRING_ERRORS; i++) { diff --git a/packages/server/src/automations/tests/utilities/index.ts b/packages/server/src/automations/tests/utilities/index.ts index 0648a5cb0a..4b41f1d977 100644 --- a/packages/server/src/automations/tests/utilities/index.ts +++ b/packages/server/src/automations/tests/utilities/index.ts @@ -120,19 +120,22 @@ export async function captureAutomationMessages( */ export async function captureAllAutomationResults( f: () => Promise -): Promise[]> { - const runs: Job[] = [] +): Promise[]> { + const runs: queue.TestQueueMessage[] = [] const queue = getQueue() let messagesOutstanding = 0 - const completedListener = async (job: Job) => { + const completedListener = async ( + job: queue.TestQueueMessage + ) => { runs.push(job) messagesOutstanding-- } - const messageListener = async (message: Job) => { + const messageListener = async ( + message: queue.TestQueueMessage + ) => { // Don't count cron messages, as they don't get triggered automatically. - const isManualTrigger = (message as any).manualTrigger === true - if (!isManualTrigger && message.opts?.repeat != null) { + if (!message.manualTrigger && message.opts?.repeat != null) { return } messagesOutstanding++