mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-19 11:01:15 +00:00
93 lines
2.9 KiB
TypeScript
93 lines
2.9 KiB
TypeScript
import { GlobalConfig } from '@n8n/config';
|
|
import { Container } from '@n8n/di';
|
|
|
|
import { ExecutionDataRepository } from '@/databases/repositories/execution-data.repository';
|
|
import { ExecutionRepository } from '@/databases/repositories/execution.repository';
|
|
|
|
import { createWorkflow } from '../../shared/db/workflows';
|
|
import * as testDb from '../../shared/test-db';
|
|
|
|
describe('ExecutionRepository', () => {
|
|
beforeAll(async () => {
|
|
await testDb.init();
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
await testDb.truncate(['Workflow', 'Execution']);
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await testDb.terminate();
|
|
});
|
|
|
|
describe('createNewExecution', () => {
|
|
it('should save execution data', async () => {
|
|
const executionRepo = Container.get(ExecutionRepository);
|
|
const workflow = await createWorkflow({ settings: { executionOrder: 'v1' } });
|
|
const executionId = await executionRepo.createNewExecution({
|
|
workflowId: workflow.id,
|
|
data: {
|
|
//@ts-expect-error This is not needed for tests
|
|
resultData: {},
|
|
},
|
|
workflowData: workflow,
|
|
mode: 'manual',
|
|
startedAt: new Date(),
|
|
status: 'new',
|
|
finished: false,
|
|
});
|
|
|
|
expect(executionId).toBeDefined();
|
|
|
|
const executionEntity = await executionRepo.findOneBy({ id: executionId });
|
|
expect(executionEntity?.id).toEqual(executionId);
|
|
expect(executionEntity?.workflowId).toEqual(workflow.id);
|
|
expect(executionEntity?.status).toEqual('new');
|
|
|
|
const executionDataRepo = Container.get(ExecutionDataRepository);
|
|
const executionData = await executionDataRepo.findOneBy({ executionId });
|
|
expect(executionData?.workflowData).toEqual({
|
|
id: workflow.id,
|
|
connections: workflow.connections,
|
|
nodes: workflow.nodes,
|
|
name: workflow.name,
|
|
settings: workflow.settings,
|
|
});
|
|
expect(executionData?.data).toEqual('[{"resultData":"1"},{}]');
|
|
});
|
|
|
|
it('should not create execution if execution data insert fails', async () => {
|
|
const { type: dbType, sqlite: sqliteConfig } = Container.get(GlobalConfig).database;
|
|
// Do not run this test for the legacy sqlite driver
|
|
if (dbType === 'sqlite' && sqliteConfig.poolSize === 0) return;
|
|
|
|
const executionRepo = Container.get(ExecutionRepository);
|
|
const executionDataRepo = Container.get(ExecutionDataRepository);
|
|
|
|
const workflow = await createWorkflow({ settings: { executionOrder: 'v1' } });
|
|
jest
|
|
.spyOn(executionDataRepo, 'createExecutionDataForExecution')
|
|
.mockRejectedValueOnce(new Error());
|
|
|
|
await expect(
|
|
async () =>
|
|
await executionRepo.createNewExecution({
|
|
workflowId: workflow.id,
|
|
data: {
|
|
//@ts-expect-error This is not needed for tests
|
|
resultData: {},
|
|
},
|
|
workflowData: workflow,
|
|
mode: 'manual',
|
|
startedAt: new Date(),
|
|
status: 'new',
|
|
finished: false,
|
|
}),
|
|
).rejects.toThrow();
|
|
|
|
const executionEntities = await executionRepo.find();
|
|
expect(executionEntities).toBeEmptyArray();
|
|
});
|
|
});
|
|
});
|