@budibase/backend-core 3.13.10 → 3.13.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const queue_1 = require("../../src/queue");
13
+ const utilities_1 = require("../core/utilities");
14
+ const queue_2 = require("../core/utilities/utils/queue");
15
+ class TestProcessor extends queue_1.QueuedProcessor {
16
+ constructor(options = {}) {
17
+ super(utilities_1.generator.guid(), options);
18
+ this.processFn = jest.fn();
19
+ }
20
+ }
21
+ describe("QueuedProcessor", () => {
22
+ let processor;
23
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
24
+ yield (0, queue_2.useRealQueues)();
25
+ }));
26
+ beforeEach(() => {
27
+ jest.clearAllMocks();
28
+ });
29
+ afterEach(() => __awaiter(void 0, void 0, void 0, function* () {
30
+ yield processor.close();
31
+ }));
32
+ describe("execute", () => {
33
+ const testData = { id: "test-id", value: "test-value" };
34
+ beforeEach(() => {
35
+ processor = new TestProcessor({
36
+ waitForCompletionMs: 10000,
37
+ maxAttempts: 3,
38
+ });
39
+ jest.resetAllMocks();
40
+ });
41
+ it("should return success when job completes successfully", () => __awaiter(void 0, void 0, void 0, function* () {
42
+ const expectedResult = { message: "success" };
43
+ processor.processFn.mockResolvedValue(expectedResult);
44
+ const result = yield processor.execute(testData);
45
+ expect(processor.processFn).toHaveBeenCalledWith(testData);
46
+ expect(result).toEqual({ success: true, result: expectedResult });
47
+ }));
48
+ it("should return timeout when job times out", () => __awaiter(void 0, void 0, void 0, function* () {
49
+ const processor = new TestProcessor({ waitForCompletionMs: 1 });
50
+ processor.processFn.mockResolvedValue(new Promise(() => { })); // Never resolves
51
+ try {
52
+ const result = yield processor.execute(testData);
53
+ expect(result).toEqual({ success: false, reason: "timeout" });
54
+ }
55
+ finally {
56
+ yield processor.close(true);
57
+ }
58
+ }));
59
+ it("should throw job processing errors", () => __awaiter(void 0, void 0, void 0, function* () {
60
+ const jobError = new Error("Job processing failed");
61
+ processor.processFn.mockRejectedValue(jobError);
62
+ yield expect(processor.execute(testData)).rejects.toThrow("Job processing failed");
63
+ expect(processor.processFn).toHaveBeenCalledTimes(3);
64
+ }));
65
+ it("should handle UnretriableError by moving job to failed", () => __awaiter(void 0, void 0, void 0, function* () {
66
+ const unretriableError = new queue_1.UnretriableError("This error cannot be retried");
67
+ processor.processFn.mockRejectedValue(unretriableError);
68
+ yield expect(processor.execute(testData)).rejects.toThrow("This error cannot be retried");
69
+ expect(processor.processFn).toHaveBeenCalledTimes(1);
70
+ }));
71
+ });
72
+ describe("integration tests", () => {
73
+ beforeEach(() => {
74
+ processor = new TestProcessor({ waitForCompletionMs: 5000 });
75
+ });
76
+ it("should process multiple jobs sequentially", () => __awaiter(void 0, void 0, void 0, function* () {
77
+ processor.processFn
78
+ .mockResolvedValueOnce({ result: "job1" })
79
+ .mockResolvedValueOnce({ result: "job2" })
80
+ .mockResolvedValueOnce({ result: "job3" });
81
+ const results = yield Promise.all([
82
+ processor.execute({ id: "1", value: "test1" }),
83
+ processor.execute({ id: "2", value: "test2" }),
84
+ processor.execute({ id: "3", value: "test3" }),
85
+ ]);
86
+ expect(results).toEqual([
87
+ { success: true, result: { result: "job1" } },
88
+ { success: true, result: { result: "job2" } },
89
+ { success: true, result: { result: "job3" } },
90
+ ]);
91
+ expect(processor.processFn).toHaveBeenCalledTimes(3);
92
+ }));
93
+ it("should handle mixed success and failure jobs", () => __awaiter(void 0, void 0, void 0, function* () {
94
+ processor.processFn
95
+ .mockRejectedValueOnce(new Error("failed"))
96
+ .mockResolvedValueOnce({ result: "success" });
97
+ const result = yield processor.execute({ id: "1", value: "test1" });
98
+ expect(processor.processFn).toHaveBeenCalledTimes(2);
99
+ expect(result).toEqual({ success: true, result: { result: "success" } });
100
+ }));
101
+ });
102
+ });
103
+ //# sourceMappingURL=queuedProcessor.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queuedProcessor.spec.js","sourceRoot":"","sources":["../../../tests/queue/queuedProcessor.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@budibase/backend-core",
3
- "version": "3.13.10",
3
+ "version": "3.13.12",
4
4
  "description": "Budibase backend core libraries used in server and worker",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -116,5 +116,5 @@
116
116
  }
117
117
  }
118
118
  },
119
- "gitHead": "9d6b86cc387bd1e3cc4ec8f3a1c7f8f3a94d1205"
119
+ "gitHead": "fc4f6a024f4bd3a9cb8af3f292ce0c783a4331a3"
120
120
  }