| | import { ExecutionRepository } from '@n8n/db'; |
| | import { Container } from '@n8n/di'; |
| | import { DateTime } from 'luxon'; |
| |
|
| | import { createExecution } from '@test-integration/db/executions'; |
| | import { createWorkflow } from '@test-integration/db/workflows'; |
| |
|
| | import * as testDb from './shared/test-db'; |
| |
|
| | describe('UserRepository', () => { |
| | let executionRepository: ExecutionRepository; |
| |
|
| | beforeAll(async () => { |
| | await testDb.init(); |
| | executionRepository = Container.get(ExecutionRepository); |
| | }); |
| |
|
| | beforeEach(async () => { |
| | await testDb.truncate(['ExecutionEntity']); |
| | }); |
| |
|
| | afterAll(async () => { |
| | await testDb.terminate(); |
| | }); |
| |
|
| | describe('findManyByRangeQuery', () => { |
| | test('sort by `createdAt` if `startedAt` is null', async () => { |
| | const now = DateTime.utc(); |
| | const workflow = await createWorkflow(); |
| | const execution1 = await createExecution( |
| | { |
| | createdAt: now.plus({ minute: 1 }).toJSDate(), |
| | startedAt: now.plus({ minute: 1 }).toJSDate(), |
| | }, |
| | workflow, |
| | ); |
| | const execution2 = await createExecution( |
| | { |
| | createdAt: now.plus({ minute: 2 }).toJSDate(), |
| | startedAt: null, |
| | }, |
| | workflow, |
| | ); |
| | const execution3 = await createExecution( |
| | { |
| | createdAt: now.plus({ minute: 3 }).toJSDate(), |
| | startedAt: now.plus({ minute: 3 }).toJSDate(), |
| | }, |
| | workflow, |
| | ); |
| |
|
| | const executions = await executionRepository.findManyByRangeQuery({ |
| | workflowId: workflow.id, |
| | accessibleWorkflowIds: [workflow.id], |
| | kind: 'range', |
| | range: { limit: 10 }, |
| | order: { startedAt: 'DESC' }, |
| | }); |
| |
|
| | |
| | |
| | expect(executions.map((e) => e.id)).toStrictEqual([ |
| | execution3.id, |
| | execution2.id, |
| | execution1.id, |
| | ]); |
| | }); |
| | }); |
| | }); |
| |
|