@nest-boot/schedule 7.2.1 → 8.0.0-beta.0

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.
Files changed (37) hide show
  1. package/dist/index.d.ts +5 -5
  2. package/dist/index.js +5 -21
  3. package/dist/index.js.map +1 -1
  4. package/dist/schedule-module-options.interface.js +1 -2
  5. package/dist/schedule-options.interface.js +1 -2
  6. package/dist/schedule.decorator.d.ts +1 -1
  7. package/dist/schedule.decorator.js +6 -12
  8. package/dist/schedule.decorator.js.map +1 -1
  9. package/dist/schedule.module-definition.d.ts +1 -1
  10. package/dist/schedule.module-definition.js +7 -11
  11. package/dist/schedule.module-definition.js.map +1 -1
  12. package/dist/schedule.module.d.ts +1 -1
  13. package/dist/schedule.module.js +20 -23
  14. package/dist/schedule.module.js.map +1 -1
  15. package/dist/schedule.processor.d.ts +2 -2
  16. package/dist/schedule.processor.js +13 -14
  17. package/dist/schedule.processor.js.map +1 -1
  18. package/dist/schedule.registry.d.ts +1 -1
  19. package/dist/schedule.registry.js +21 -20
  20. package/dist/schedule.registry.js.map +1 -1
  21. package/package.json +21 -24
  22. package/dist/index.spec.d.ts +0 -0
  23. package/dist/index.spec.js +0 -45
  24. package/dist/index.spec.js.map +0 -1
  25. package/dist/schedule.decorator.spec.d.ts +0 -1
  26. package/dist/schedule.decorator.spec.js +0 -108
  27. package/dist/schedule.decorator.spec.js.map +0 -1
  28. package/dist/schedule.module.spec.d.ts +0 -1
  29. package/dist/schedule.module.spec.js +0 -91
  30. package/dist/schedule.module.spec.js.map +0 -1
  31. package/dist/schedule.processor.spec.d.ts +0 -1
  32. package/dist/schedule.processor.spec.js +0 -180
  33. package/dist/schedule.processor.spec.js.map +0 -1
  34. package/dist/schedule.registry.spec.d.ts +0 -1
  35. package/dist/schedule.registry.spec.js +0 -233
  36. package/dist/schedule.registry.spec.js.map +0 -1
  37. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -1,108 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- require("reflect-metadata");
13
- const schedule_decorator_1 = require("./schedule.decorator");
14
- const schedule_module_definition_1 = require("./schedule.module-definition");
15
- function getMethod(prototype, name) {
16
- return Object.getOwnPropertyDescriptor(prototype, name)?.value;
17
- }
18
- describe("schedule decorators", () => {
19
- class ExampleSchedules {
20
- explicit() {
21
- return undefined;
22
- }
23
- cron() {
24
- return undefined;
25
- }
26
- interval() {
27
- return undefined;
28
- }
29
- }
30
- __decorate([
31
- (0, schedule_decorator_1.Schedule)({
32
- type: "cron",
33
- value: "0 1 * * *",
34
- timezone: "Asia/Shanghai",
35
- }),
36
- __metadata("design:type", Function),
37
- __metadata("design:paramtypes", []),
38
- __metadata("design:returntype", void 0)
39
- ], ExampleSchedules.prototype, "explicit", null);
40
- __decorate([
41
- (0, schedule_decorator_1.Cron)("* * * * *", {
42
- attempts: 2,
43
- timezone: "UTC",
44
- }),
45
- __metadata("design:type", Function),
46
- __metadata("design:paramtypes", []),
47
- __metadata("design:returntype", void 0)
48
- ], ExampleSchedules.prototype, "cron", null);
49
- __decorate([
50
- (0, schedule_decorator_1.Interval)("5000", {
51
- removeOnComplete: true,
52
- }),
53
- __metadata("design:type", Function),
54
- __metadata("design:paramtypes", []),
55
- __metadata("design:returntype", void 0)
56
- ], ExampleSchedules.prototype, "interval", null);
57
- it("should attach explicit schedule metadata", () => {
58
- expect(Reflect.getMetadata(schedule_module_definition_1.SCHEDULE_METADATA_KEY, getMethod(ExampleSchedules.prototype, "explicit"))).toEqual({
59
- type: "cron",
60
- value: "0 1 * * *",
61
- timezone: "Asia/Shanghai",
62
- });
63
- });
64
- it("should build cron and interval metadata with optional job options", () => {
65
- expect(Reflect.getMetadata(schedule_module_definition_1.SCHEDULE_METADATA_KEY, getMethod(ExampleSchedules.prototype, "cron"))).toEqual({
66
- attempts: 2,
67
- timezone: "UTC",
68
- type: "cron",
69
- value: "* * * * *",
70
- });
71
- expect(Reflect.getMetadata(schedule_module_definition_1.SCHEDULE_METADATA_KEY, getMethod(ExampleSchedules.prototype, "interval"))).toEqual({
72
- removeOnComplete: true,
73
- type: "interval",
74
- value: "5000",
75
- });
76
- });
77
- it("should default omitted decorator options to an empty object", () => {
78
- class Defaults {
79
- cron() {
80
- return undefined;
81
- }
82
- interval() {
83
- return undefined;
84
- }
85
- }
86
- __decorate([
87
- (0, schedule_decorator_1.Cron)("0 * * * *"),
88
- __metadata("design:type", Function),
89
- __metadata("design:paramtypes", []),
90
- __metadata("design:returntype", void 0)
91
- ], Defaults.prototype, "cron", null);
92
- __decorate([
93
- (0, schedule_decorator_1.Interval)(1000),
94
- __metadata("design:type", Function),
95
- __metadata("design:paramtypes", []),
96
- __metadata("design:returntype", void 0)
97
- ], Defaults.prototype, "interval", null);
98
- expect(Reflect.getMetadata(schedule_module_definition_1.SCHEDULE_METADATA_KEY, getMethod(Defaults.prototype, "cron"))).toEqual({
99
- type: "cron",
100
- value: "0 * * * *",
101
- });
102
- expect(Reflect.getMetadata(schedule_module_definition_1.SCHEDULE_METADATA_KEY, getMethod(Defaults.prototype, "interval"))).toEqual({
103
- type: "interval",
104
- value: 1000,
105
- });
106
- });
107
- });
108
- //# sourceMappingURL=schedule.decorator.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schedule.decorator.spec.js","sourceRoot":"","sources":["../src/schedule.decorator.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4BAA0B;AAE1B,6DAAgE;AAChE,6EAAqE;AAErE,SAAS,SAAS,CAAC,SAAiB,EAAE,IAAY;IAChD,OAAO,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC;AACjE,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,gBAAgB;QAMpB,QAAQ;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;QAMD,IAAI;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAKD,QAAQ;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;KACF;IAlBC;QALC,IAAA,6BAAQ,EAAC;YACR,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,eAAe;SAC1B,CAAC;;;;oDAGD;IAMD;QAJC,IAAA,yBAAI,EAAC,WAAW,EAAE;YACjB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,KAAK;SAChB,CAAC;;;;gDAGD;IAKD;QAHC,IAAA,6BAAQ,EAAC,MAAM,EAAE;YAChB,gBAAgB,EAAE,IAAI;SACvB,CAAC;;;;oDAGD;IAGH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CACJ,OAAO,CAAC,WAAW,CACjB,kDAAqB,EACrB,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAClD,CACF,CAAC,OAAO,CAAC;YACR,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,eAAe;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,CACJ,OAAO,CAAC,WAAW,CACjB,kDAAqB,EACrB,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAC9C,CACF,CAAC,OAAO,CAAC;YACR,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;QACH,MAAM,CACJ,OAAO,CAAC,WAAW,CACjB,kDAAqB,EACrB,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAClD,CACF,CAAC,OAAO,CAAC;YACR,gBAAgB,EAAE,IAAI;YACtB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,QAAQ;YAEZ,IAAI;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAGD,QAAQ;gBACN,OAAO,SAAS,CAAC;YACnB,CAAC;SACF;QARC;YADC,IAAA,yBAAI,EAAC,WAAW,CAAC;;;;4CAGjB;QAGD;YADC,IAAA,6BAAQ,EAAC,IAAI,CAAC;;;;gDAGd;QAGH,MAAM,CACJ,OAAO,CAAC,WAAW,CACjB,kDAAqB,EACrB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CACtC,CACF,CAAC,OAAO,CAAC;YACR,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;QACH,MAAM,CACJ,OAAO,CAAC,WAAW,CACjB,kDAAqB,EACrB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAC1C,CACF,CAAC,OAAO,CAAC;YACR,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,91 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const common_1 = require("@nestjs/common");
4
- const constants_1 = require("@nestjs/common/constants");
5
- const core_1 = require("@nestjs/core");
6
- let mockRegisterQueueAsyncOptions;
7
- const mockQueueModule = {
8
- module: class QueueModule {
9
- },
10
- };
11
- const mockRegisterQueueAsync = jest.fn((options) => {
12
- mockRegisterQueueAsyncOptions = options;
13
- return mockQueueModule;
14
- });
15
- const mockProcessorDecorator = jest.fn();
16
- const mockProcessor = jest.fn(() => mockProcessorDecorator);
17
- jest.mock("@nest-boot/bullmq", () => ({
18
- BullModule: {
19
- registerQueueAsync: mockRegisterQueueAsync,
20
- },
21
- InjectQueue: jest.fn(() => jest.fn()),
22
- Processor: mockProcessor,
23
- WorkerHost: class WorkerHost {
24
- constructor() {
25
- this.worker = {
26
- concurrency: 1,
27
- run: jest.fn().mockResolvedValue(undefined),
28
- };
29
- }
30
- },
31
- }));
32
- const schedule_module_1 = require("./schedule.module");
33
- const schedule_module_definition_1 = require("./schedule.module-definition");
34
- const schedule_processor_1 = require("./schedule.processor");
35
- const schedule_registry_1 = require("./schedule.registry");
36
- describe("ScheduleModule", () => {
37
- beforeEach(() => {
38
- jest.clearAllMocks();
39
- });
40
- it("should expose configurable root registrations", () => {
41
- const options = {
42
- concurrency: 3,
43
- };
44
- const useFactory = () => options;
45
- const dynamicModule = schedule_module_1.ScheduleModule.forRoot(options);
46
- const asyncModule = schedule_module_1.ScheduleModule.forRootAsync({
47
- useFactory,
48
- });
49
- expect(dynamicModule.module).toBe(schedule_module_1.ScheduleModule);
50
- expect(dynamicModule.providers).toEqual(expect.arrayContaining([
51
- {
52
- provide: schedule_module_definition_1.BASE_MODULE_OPTIONS_TOKEN,
53
- useValue: options,
54
- },
55
- ]));
56
- expect(asyncModule.providers).toEqual(expect.arrayContaining([
57
- {
58
- inject: [],
59
- provide: schedule_module_definition_1.BASE_MODULE_OPTIONS_TOKEN,
60
- useFactory,
61
- },
62
- ]));
63
- });
64
- it("should provide options, queue registration, and schedule services", () => {
65
- const imports = Reflect.getMetadata(constants_1.MODULE_METADATA.IMPORTS, schedule_module_1.ScheduleModule);
66
- const providers = Reflect.getMetadata(constants_1.MODULE_METADATA.PROVIDERS, schedule_module_1.ScheduleModule);
67
- const exports = Reflect.getMetadata(constants_1.MODULE_METADATA.EXPORTS, schedule_module_1.ScheduleModule);
68
- const optionsProvider = providers.find((provider) => provider.provide === schedule_module_definition_1.MODULE_OPTIONS_TOKEN);
69
- expect(imports).toEqual([core_1.DiscoveryModule, mockQueueModule]);
70
- expect(providers).toEqual(expect.arrayContaining([common_1.Logger, schedule_registry_1.ScheduleRegistry, schedule_processor_1.ScheduleProcessor]));
71
- expect(exports).toEqual([schedule_module_definition_1.MODULE_OPTIONS_TOKEN]);
72
- expect(optionsProvider.useFactory(undefined)).toEqual({});
73
- expect(optionsProvider.useFactory({
74
- autorun: false,
75
- })).toEqual({
76
- autorun: false,
77
- });
78
- });
79
- it("should register the schedule queue from module options", () => {
80
- expect(mockRegisterQueueAsyncOptions).toEqual(expect.objectContaining({
81
- inject: [schedule_module_definition_1.MODULE_OPTIONS_TOKEN],
82
- name: "schedule",
83
- }));
84
- expect(mockRegisterQueueAsyncOptions.useFactory({
85
- concurrency: 2,
86
- })).toEqual({
87
- concurrency: 2,
88
- });
89
- });
90
- });
91
- //# sourceMappingURL=schedule.module.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schedule.module.spec.js","sourceRoot":"","sources":["../src/schedule.module.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,180 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const mockProcessorDecorator = jest.fn();
37
- const mockProcessor = jest.fn(() => mockProcessorDecorator);
38
- jest.mock("@nest-boot/bullmq", () => ({
39
- InjectQueue: jest.fn(() => jest.fn()),
40
- Processor: mockProcessor,
41
- WorkerHost: class WorkerHost {
42
- constructor() {
43
- this.worker = {
44
- concurrency: 1,
45
- run: jest.fn().mockResolvedValue(undefined),
46
- };
47
- }
48
- },
49
- }));
50
- const testing_1 = require("@nestjs/testing");
51
- const schedule_module_definition_1 = require("./schedule.module-definition");
52
- const schedule_processor_1 = require("./schedule.processor");
53
- const schedule_registry_1 = require("./schedule.registry");
54
- describe("ScheduleProcessor", () => {
55
- const createRegistry = (entry) => {
56
- const get = jest.fn(() => entry);
57
- return {
58
- get,
59
- registry: {
60
- get,
61
- },
62
- };
63
- };
64
- it("should apply the schedule processor decorator", () => {
65
- expect(mockProcessor).toHaveBeenCalledWith("schedule", {
66
- autorun: false,
67
- });
68
- expect(mockProcessorDecorator).toHaveBeenCalledWith(schedule_processor_1.ScheduleProcessor);
69
- });
70
- it("should invoke the registered schedule handler for the job name", async () => {
71
- const handler = jest.fn().mockResolvedValue(undefined);
72
- const { get, registry } = createRegistry({
73
- handler,
74
- options: {
75
- type: "cron",
76
- value: "* * * * *",
77
- },
78
- });
79
- const processor = await createProcessor(registry);
80
- await processor.process({
81
- name: "Tasks.run",
82
- });
83
- expect(get).toHaveBeenCalledWith("Tasks.run");
84
- expect(handler).toHaveBeenCalledTimes(1);
85
- });
86
- it("should ignore jobs with no registered handler", async () => {
87
- const { get, registry } = createRegistry();
88
- const processor = await createProcessor(registry);
89
- await expect(processor.process({
90
- name: "Missing.run",
91
- })).resolves.toBeUndefined();
92
- expect(get).toHaveBeenCalledWith("Missing.run");
93
- });
94
- it("should configure concurrency and start the worker by default", async () => {
95
- const processor = await createProcessor(createRegistry().registry, {
96
- concurrency: 4,
97
- });
98
- processor.onApplicationBootstrap();
99
- expect(processor.worker.concurrency).toBe(4);
100
- expect(processor.worker.run).toHaveBeenCalledTimes(1);
101
- });
102
- it("should skip autorun when disabled", async () => {
103
- const processor = await createProcessor(createRegistry().registry, {
104
- autorun: false,
105
- });
106
- processor.onApplicationBootstrap();
107
- expect(processor.worker.concurrency).toBe(1);
108
- expect(processor.worker.run).not.toHaveBeenCalled();
109
- });
110
- it("should swallow worker run errors", async () => {
111
- const processor = await createProcessor(createRegistry().registry);
112
- processor.worker.run.mockRejectedValueOnce(new Error("boom"));
113
- expect(() => {
114
- processor.onApplicationBootstrap();
115
- }).not.toThrow();
116
- await Promise.resolve();
117
- expect(processor.worker.run).toHaveBeenCalledTimes(1);
118
- });
119
- it("should load decorator metadata fallback branches", async () => {
120
- await jest.isolateModulesAsync(async () => {
121
- jest.doMock("@nest-boot/bullmq", () => ({
122
- InjectQueue: jest.fn(() => jest.fn()),
123
- Processor: jest.fn(() => jest.fn()),
124
- WorkerHost: class WorkerHost {
125
- constructor() {
126
- this.worker = {
127
- concurrency: 1,
128
- run: jest.fn().mockResolvedValue(undefined),
129
- };
130
- }
131
- },
132
- }));
133
- jest.doMock("./schedule.registry", () => ({
134
- ScheduleRegistry: undefined,
135
- }));
136
- const module = await Promise.resolve().then(() => __importStar(require("./schedule.processor")));
137
- expect(module.ScheduleProcessor).toBeDefined();
138
- });
139
- await jest.isolateModulesAsync(async () => {
140
- jest.doMock("@nest-boot/bullmq", () => ({
141
- InjectQueue: jest.fn(() => jest.fn()),
142
- Processor: jest.fn(() => jest.fn()),
143
- WorkerHost: class WorkerHost {
144
- constructor() {
145
- this.worker = {
146
- concurrency: 1,
147
- run: jest.fn().mockResolvedValue(undefined),
148
- };
149
- }
150
- },
151
- }));
152
- jest.doMock("./schedule-module-options.interface", () => ({
153
- ScheduleModuleOptions: class ScheduleModuleOptions {
154
- },
155
- }));
156
- const module = await Promise.resolve().then(() => __importStar(require("./schedule.processor")));
157
- expect(module.ScheduleProcessor).toBeDefined();
158
- });
159
- });
160
- });
161
- async function createProcessor(registry, options) {
162
- const providers = [
163
- schedule_processor_1.ScheduleProcessor,
164
- {
165
- provide: schedule_registry_1.ScheduleRegistry,
166
- useValue: registry,
167
- },
168
- ];
169
- if (typeof options !== "undefined") {
170
- providers.push({
171
- provide: schedule_module_definition_1.MODULE_OPTIONS_TOKEN,
172
- useValue: options,
173
- });
174
- }
175
- const moduleRef = await testing_1.Test.createTestingModule({
176
- providers,
177
- }).compile();
178
- return moduleRef.get(schedule_processor_1.ScheduleProcessor);
179
- }
180
- //# sourceMappingURL=schedule.processor.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schedule.processor.spec.js","sourceRoot":"","sources":["../src/schedule.processor.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- import "reflect-metadata";
@@ -1,233 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- var __metadata = (this && this.__metadata) || function (k, v) {
42
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
- };
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- require("reflect-metadata");
46
- jest.mock("@nest-boot/bullmq", () => ({
47
- InjectQueue: jest.fn(() => jest.fn()),
48
- }));
49
- const common_1 = require("@nestjs/common");
50
- const core_1 = require("@nestjs/core");
51
- const testing_1 = require("@nestjs/testing");
52
- const bullmq_1 = require("bullmq");
53
- const schedule_decorator_1 = require("./schedule.decorator");
54
- const schedule_module_definition_1 = require("./schedule.module-definition");
55
- const schedule_registry_1 = require("./schedule.registry");
56
- describe("ScheduleRegistry", () => {
57
- class ControllerSchedules {
58
- constructor() {
59
- this.calls = [];
60
- }
61
- async syncUsers() {
62
- await Promise.resolve();
63
- this.calls.push("syncUsers");
64
- }
65
- undecorated() {
66
- return undefined;
67
- }
68
- }
69
- __decorate([
70
- (0, schedule_decorator_1.Cron)("*/5 * * * *", {
71
- attempts: 2,
72
- timezone: "Asia/Shanghai",
73
- }),
74
- __metadata("design:type", Function),
75
- __metadata("design:paramtypes", []),
76
- __metadata("design:returntype", Promise)
77
- ], ControllerSchedules.prototype, "syncUsers", null);
78
- class ProviderSchedules {
79
- constructor() {
80
- this.calls = [];
81
- }
82
- async refreshCache() {
83
- await Promise.resolve();
84
- this.calls.push("refreshCache");
85
- }
86
- }
87
- __decorate([
88
- (0, schedule_decorator_1.Interval)("1000", {
89
- removeOnComplete: true,
90
- }),
91
- __metadata("design:type", Function),
92
- __metadata("design:paramtypes", []),
93
- __metadata("design:returntype", Promise)
94
- ], ProviderSchedules.prototype, "refreshCache", null);
95
- const createRegistry = async (controller = new ControllerSchedules(), provider = new ProviderSchedules(), schedulers = []) => {
96
- const queue = {
97
- getJobSchedulers: jest.fn().mockResolvedValue(schedulers),
98
- removeJobScheduler: jest.fn().mockResolvedValue(undefined),
99
- upsertJobScheduler: jest.fn().mockResolvedValue(undefined),
100
- };
101
- const reflector = {
102
- get: jest.fn((key, handler) => Reflect.getMetadata(key, handler)),
103
- };
104
- const discoveryService = {
105
- getControllers: jest.fn(() => [
106
- {
107
- instance: controller,
108
- },
109
- {
110
- instance: null,
111
- },
112
- ]),
113
- getProviders: jest.fn(() => [
114
- {
115
- instance: provider,
116
- },
117
- {
118
- instance: undefined,
119
- },
120
- ]),
121
- };
122
- const metadataScanner = {
123
- getAllMethodNames: jest.fn((prototype) => Object.getOwnPropertyNames(prototype).filter((key) => key !== "constructor")),
124
- };
125
- const moduleRef = await testing_1.Test.createTestingModule({
126
- providers: [
127
- schedule_registry_1.ScheduleRegistry,
128
- {
129
- provide: bullmq_1.Queue,
130
- useValue: queue,
131
- },
132
- {
133
- provide: core_1.Reflector,
134
- useValue: reflector,
135
- },
136
- {
137
- provide: core_1.DiscoveryService,
138
- useValue: discoveryService,
139
- },
140
- {
141
- provide: core_1.MetadataScanner,
142
- useValue: metadataScanner,
143
- },
144
- ],
145
- }).compile();
146
- const registry = moduleRef.get(schedule_registry_1.ScheduleRegistry);
147
- jest.spyOn(registry.logger, "log").mockImplementation(jest.fn());
148
- return {
149
- controller,
150
- discoveryService,
151
- metadataScanner,
152
- provider,
153
- queue,
154
- reflector,
155
- registry,
156
- };
157
- };
158
- beforeEach(() => {
159
- jest.spyOn(common_1.Logger.prototype, "log").mockImplementation(jest.fn());
160
- });
161
- afterEach(() => {
162
- jest.restoreAllMocks();
163
- });
164
- it("should discover decorated methods, clean stale schedulers, and register schedules", async () => {
165
- const { controller, queue, registry } = await createRegistry(undefined, undefined, [
166
- {
167
- name: "Old.cron",
168
- pattern: "0 0 * * *",
169
- },
170
- {
171
- name: "Old.interval",
172
- every: 5000,
173
- },
174
- {
175
- name: "ControllerSchedules.syncUsers",
176
- pattern: "*/5 * * * *",
177
- },
178
- ]);
179
- await registry.onApplicationBootstrap();
180
- await registry.get("ControllerSchedules.syncUsers")?.handler();
181
- expect(controller.calls).toEqual(["syncUsers"]);
182
- expect(queue.removeJobScheduler).toHaveBeenCalledTimes(2);
183
- expect(queue.removeJobScheduler).toHaveBeenCalledWith("Old.cron");
184
- expect(queue.removeJobScheduler).toHaveBeenCalledWith("Old.interval");
185
- expect(queue.upsertJobScheduler).toHaveBeenCalledWith("ControllerSchedules.syncUsers", {
186
- pattern: "*/5 * * * *",
187
- tz: "Asia/Shanghai",
188
- }, {
189
- name: "ControllerSchedules.syncUsers",
190
- opts: {
191
- attempts: 2,
192
- },
193
- });
194
- expect(queue.upsertJobScheduler).toHaveBeenCalledWith("ProviderSchedules.refreshCache", {
195
- every: 1000,
196
- tz: "UTC",
197
- }, {
198
- name: "ProviderSchedules.refreshCache",
199
- opts: {
200
- removeOnComplete: true,
201
- },
202
- });
203
- });
204
- it("should ignore non-object wrappers and methods without schedule metadata", async () => {
205
- const { discoveryService, metadataScanner, queue, reflector, registry } = await createRegistry();
206
- await registry.onApplicationBootstrap();
207
- expect(discoveryService.getControllers).toHaveBeenCalledTimes(1);
208
- expect(discoveryService.getProviders).toHaveBeenCalledTimes(1);
209
- expect(metadataScanner.getAllMethodNames).toHaveBeenCalledTimes(2);
210
- expect(reflector.get).toHaveBeenCalledWith(schedule_module_definition_1.SCHEDULE_METADATA_KEY, Object.getOwnPropertyDescriptor(ControllerSchedules.prototype, "undecorated")?.value);
211
- expect(queue.removeJobScheduler).not.toHaveBeenCalled();
212
- expect(queue.upsertJobScheduler).toHaveBeenCalledTimes(2);
213
- expect(registry.get("ControllerSchedules.undecorated")).toBeUndefined();
214
- });
215
- it("should load decorator metadata fallback branches", async () => {
216
- await jest.isolateModulesAsync(async () => {
217
- jest.doMock("@nest-boot/bullmq", () => ({
218
- InjectQueue: jest.fn(() => jest.fn()),
219
- }));
220
- jest.doMock("bullmq", () => ({
221
- Queue: undefined,
222
- }));
223
- jest.doMock("@nestjs/core", () => ({
224
- DiscoveryService: undefined,
225
- MetadataScanner: undefined,
226
- Reflector: undefined,
227
- }));
228
- const module = await Promise.resolve().then(() => __importStar(require("./schedule.registry")));
229
- expect(module.ScheduleRegistry).toBeDefined();
230
- });
231
- });
232
- });
233
- //# sourceMappingURL=schedule.registry.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schedule.registry.spec.js","sourceRoot":"","sources":["../src/schedule.registry.spec.ts"],"names":[],"mappings":"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"}