2024-01-23 01:59:06 -08:00
|
|
|
import { InternalHooks } from '@/InternalHooks';
|
|
|
|
import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials';
|
|
|
|
import { UpdateWorkflowCommand } from '@/commands/update/workflow';
|
|
|
|
|
2024-06-18 01:50:39 -07:00
|
|
|
import { setupTestCommand } from '@test-integration/utils/testCommand';
|
2024-01-23 01:59:06 -08:00
|
|
|
import * as testDb from '../../shared/testDb';
|
|
|
|
import { createWorkflowWithTrigger, getAllWorkflows } from '../../shared/db/workflows';
|
|
|
|
import { mockInstance } from '../../../shared/mocking';
|
|
|
|
|
2024-06-18 01:50:39 -07:00
|
|
|
mockInstance(InternalHooks);
|
|
|
|
mockInstance(LoadNodesAndCredentials);
|
|
|
|
const command = setupTestCommand(UpdateWorkflowCommand);
|
2024-01-23 01:59:06 -08:00
|
|
|
|
|
|
|
beforeEach(async () => {
|
|
|
|
await testDb.truncate(['Workflow']);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('update:workflow can activate all workflows', async () => {
|
|
|
|
//
|
|
|
|
// ARRANGE
|
|
|
|
//
|
|
|
|
const workflows = await Promise.all([
|
|
|
|
createWorkflowWithTrigger({}),
|
|
|
|
createWorkflowWithTrigger({}),
|
|
|
|
]);
|
|
|
|
expect(workflows).toMatchObject([{ active: false }, { active: false }]);
|
|
|
|
|
|
|
|
//
|
|
|
|
// ACT
|
|
|
|
//
|
2024-06-18 01:50:39 -07:00
|
|
|
await command.run(['--all', '--active=true']);
|
2024-01-23 01:59:06 -08:00
|
|
|
|
|
|
|
//
|
|
|
|
// ASSERT
|
|
|
|
//
|
|
|
|
const after = await getAllWorkflows();
|
|
|
|
expect(after).toMatchObject([{ active: true }, { active: true }]);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('update:workflow can deactivate all workflows', async () => {
|
|
|
|
//
|
|
|
|
// ARRANGE
|
|
|
|
//
|
|
|
|
const workflows = await Promise.all([
|
|
|
|
createWorkflowWithTrigger({ active: true }),
|
|
|
|
createWorkflowWithTrigger({ active: true }),
|
|
|
|
]);
|
|
|
|
expect(workflows).toMatchObject([{ active: true }, { active: true }]);
|
|
|
|
|
|
|
|
//
|
|
|
|
// ACT
|
|
|
|
//
|
2024-06-18 01:50:39 -07:00
|
|
|
await command.run(['--all', '--active=false']);
|
2024-01-23 01:59:06 -08:00
|
|
|
|
|
|
|
//
|
|
|
|
// ASSERT
|
|
|
|
//
|
|
|
|
const after = await getAllWorkflows();
|
|
|
|
expect(after).toMatchObject([{ active: false }, { active: false }]);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('update:workflow can activate a specific workflow', async () => {
|
|
|
|
//
|
|
|
|
// ARRANGE
|
|
|
|
//
|
|
|
|
const workflows = (
|
|
|
|
await Promise.all([
|
|
|
|
createWorkflowWithTrigger({ active: false }),
|
|
|
|
createWorkflowWithTrigger({ active: false }),
|
|
|
|
])
|
|
|
|
).sort((wf1, wf2) => wf1.id.localeCompare(wf2.id));
|
|
|
|
expect(workflows).toMatchObject([{ active: false }, { active: false }]);
|
|
|
|
|
|
|
|
//
|
|
|
|
// ACT
|
|
|
|
//
|
2024-06-18 01:50:39 -07:00
|
|
|
await command.run([`--id=${workflows[0].id}`, '--active=true']);
|
2024-01-23 01:59:06 -08:00
|
|
|
|
|
|
|
//
|
|
|
|
// ASSERT
|
|
|
|
//
|
|
|
|
const after = (await getAllWorkflows()).sort((wf1, wf2) => wf1.id.localeCompare(wf2.id));
|
|
|
|
expect(after).toMatchObject([{ active: true }, { active: false }]);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('update:workflow can deactivate a specific workflow', async () => {
|
|
|
|
//
|
|
|
|
// ARRANGE
|
|
|
|
//
|
|
|
|
const workflows = (
|
|
|
|
await Promise.all([
|
|
|
|
createWorkflowWithTrigger({ active: true }),
|
|
|
|
createWorkflowWithTrigger({ active: true }),
|
|
|
|
])
|
|
|
|
).sort((wf1, wf2) => wf1.id.localeCompare(wf2.id));
|
|
|
|
expect(workflows).toMatchObject([{ active: true }, { active: true }]);
|
|
|
|
|
|
|
|
//
|
|
|
|
// ACT
|
|
|
|
//
|
2024-06-18 01:50:39 -07:00
|
|
|
await command.run([`--id=${workflows[0].id}`, '--active=false']);
|
2024-01-23 01:59:06 -08:00
|
|
|
|
|
|
|
//
|
|
|
|
// ASSERT
|
|
|
|
//
|
|
|
|
const after = (await getAllWorkflows()).sort((wf1, wf2) => wf1.id.localeCompare(wf2.id));
|
|
|
|
expect(after).toMatchObject([{ active: false }, { active: true }]);
|
|
|
|
});
|