fix(plugin-workflow): fix duplicating sync workflow (#4727)

This commit is contained in:
Junyi 2024-06-22 14:44:18 +08:00 committed by GitHub
parent d7733ed363
commit 095b50f964
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 72 additions and 1 deletions

View File

@ -381,5 +381,76 @@ describe('workflow > actions > workflows', () => {
expect(e1.key).not.toBe(e2.key); expect(e1.key).not.toBe(e2.key);
expect(e2.workflowId).toBe(w2.id); expect(e2.workflowId).toBe(w2.id);
}); });
it('duplicate sync workflow', async () => {
const w1 = await WorkflowModel.create({
enabled: true,
type: 'collection',
config: {
mode: 1,
collection: 'posts',
},
sync: true,
});
const p1 = await PostRepo.create({ values: { title: 't1' } });
const { body, status } = await agent.resource(`workflows`).revision({
filterByTk: w1.id,
});
expect(status).toBe(200);
const { data: w2 } = body;
expect(w2.config).toMatchObject(w1.config);
expect(w2.key).not.toBe(w1.key);
expect(w2.current).toBeTruthy();
expect(w2.enabled).toBe(false);
expect(w2.allExecuted).toBe(0);
expect(w2.sync).toBe(true);
// stop w1
await WorkflowModel.update(
{
enabled: false,
},
{
where: {
id: w1.id,
},
individualHooks: true,
},
);
await WorkflowModel.update(
{
enabled: true,
},
{
where: {
id: w2.id,
},
individualHooks: true,
},
);
const p2 = await PostRepo.create({ values: { title: 't2' } });
const [w1next, w2next] = await WorkflowModel.findAll({
order: [['id', 'ASC']],
});
expect(w1next.enabled).toBe(false);
expect(w1next.current).toBe(true);
expect(w1next.executed).toBe(1);
expect(w1next.allExecuted).toBe(1);
expect(w2next.enabled).toBe(true);
expect(w2next.executed).toBe(1);
expect(w2next.allExecuted).toBe(1);
const [e1] = await w1next.getExecutions();
const [e2] = await w2next.getExecutions();
expect(e1.key).not.toBe(e2.key);
expect(e2.workflowId).toBe(w2.id);
});
}); });
}); });

View File

@ -84,7 +84,6 @@ export async function revision(context: Context, next) {
title: origin.title, title: origin.title,
triggerTitle: origin.triggerTitle, triggerTitle: origin.triggerTitle,
allExecuted: origin.allExecuted, allExecuted: origin.allExecuted,
sync: origin.sync,
} }
: values; : values;
@ -93,6 +92,7 @@ export async function revision(context: Context, next) {
title: `${origin.title} copy`, title: `${origin.title} copy`,
description: origin.description, description: origin.description,
...revisionData, ...revisionData,
sync: origin.sync,
type: origin.type, type: origin.type,
config: config:
typeof trigger.duplicateConfig === 'function' typeof trigger.duplicateConfig === 'function'