From 643594abadb2064441afa08bd5950c8ee037920e Mon Sep 17 00:00:00 2001 From: Junyi Date: Fri, 25 Aug 2023 22:11:12 +0700 Subject: [PATCH] fix(plugin-cm): fix life cycle (#2535) --- .../collection-manager/src/server/server.ts | 2 +- packages/plugins/workflow/package.json | 2 + .../__tests__/triggers/collection.test.ts | 49 ++++++++++++++++++- 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/packages/plugins/collection-manager/src/server/server.ts b/packages/plugins/collection-manager/src/server/server.ts index 261fc78a9..d07e4b90b 100644 --- a/packages/plugins/collection-manager/src/server/server.ts +++ b/packages/plugins/collection-manager/src/server/server.ts @@ -214,7 +214,7 @@ export class CollectionManagerPlugin extends Plugin { await this.app.db.getRepository('collections').load(); }; - this.app.on('afterStart', loadCollections); + this.app.on('beforeStart', loadCollections); this.app.on('beforeUpgrade', async () => { const syncOptions = { alter: { diff --git a/packages/plugins/workflow/package.json b/packages/plugins/workflow/package.json index 110ad9122..cf7b0ad8d 100644 --- a/packages/plugins/workflow/package.json +++ b/packages/plugins/workflow/package.json @@ -34,6 +34,8 @@ "@nocobase/database": "0.x", "@nocobase/evaluators": "0.x", "@nocobase/logger": "0.x", + "@nocobase/plugin-collection-manager": "0.x", + "@nocobase/plugin-error-handler": "0.x", "@nocobase/plugin-users": "0.x", "@nocobase/resourcer": "0.x", "@nocobase/server": "0.x", diff --git a/packages/plugins/workflow/src/server/__tests__/triggers/collection.test.ts b/packages/plugins/workflow/src/server/__tests__/triggers/collection.test.ts index 56299ebca..a853ec8cd 100644 --- a/packages/plugins/workflow/src/server/__tests__/triggers/collection.test.ts +++ b/packages/plugins/workflow/src/server/__tests__/triggers/collection.test.ts @@ -13,7 +13,9 @@ describe('workflow > triggers > collection', () => { let WorkflowModel; beforeEach(async () => { - app = await getApp(); + app = await getApp({ + plugins: ['error-handler', 'collection-manager'], + }); db = app.db; WorkflowModel = db.getCollection('workflows').model; @@ -50,6 +52,51 @@ describe('workflow > triggers > collection', () => { const executions = await workflow.getExecutions(); expect(executions.length).toBe(0); }); + + it('restart server and listen a collection managed by collection-manager', async () => { + await db.getRepository('collections').create({ + values: { + name: 'temp', + title: 'Temp', + }, + // to trigger collection sync to db.collections + context: {}, + }); + + const workflow = await WorkflowModel.create({ + type: 'collection', + config: { + mode: 1, + collection: 'temp', + }, + enabled: true, + }); + + await db.getRepository('temp').create({ values: {} }); + + await sleep(500); + + const e1 = await workflow.getExecutions(); + expect(e1.length).toBe(1); + + await app.destroy(); + + app = await getApp({ + plugins: ['error-handler', 'collection-manager'], + database: { + tablePrefix: db.options.tablePrefix, + }, + }); + + db = app.db; + + await db.getRepository('temp').create({ values: {} }); + + await sleep(500); + + const e2 = await db.getModel('executions').findAll(); + expect(e2.length).toBe(2); + }); }); describe('model context', () => {