Respond to Adri's feedback.

This commit is contained in:
Sam Rose 2025-02-18 14:01:32 +00:00
parent 5aeac61cd1
commit 6952ca325a
No known key found for this signature in database
3 changed files with 14 additions and 12 deletions

View File

@ -40,6 +40,7 @@ export interface TestQueueMessage<T = any> extends Partial<Job<T>> {
queue: Queue<T>
data: any
opts?: JobOptions
manualTrigger?: boolean
}
/**
@ -90,10 +91,9 @@ export class InMemoryQueue<T = any> implements Partial<Queue<T>> {
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<T = any> implements Partial<Queue<T>> {
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
}
}

View File

@ -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<AutomationData>[] = []
let results: queue.TestQueueMessage<AutomationData>[] = []
const removed = await captureAutomationRemovals(automation, async () => {
results = await captureAutomationResults(automation, async () => {
for (let i = 0; i < MAX_AUTOMATION_RECURRING_ERRORS; i++) {

View File

@ -120,19 +120,22 @@ export async function captureAutomationMessages(
*/
export async function captureAllAutomationResults(
f: () => Promise<unknown>
): Promise<Job<AutomationData>[]> {
const runs: Job<AutomationData>[] = []
): Promise<queue.TestQueueMessage<AutomationData>[]> {
const runs: queue.TestQueueMessage<AutomationData>[] = []
const queue = getQueue()
let messagesOutstanding = 0
const completedListener = async (job: Job<AutomationData>) => {
const completedListener = async (
job: queue.TestQueueMessage<AutomationData>
) => {
runs.push(job)
messagesOutstanding--
}
const messageListener = async (message: Job<AutomationData>) => {
const messageListener = async (
message: queue.TestQueueMessage<AutomationData>
) => {
// 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++