From 76ae586d911be08ac4dd1a5158c820a7e277c434 Mon Sep 17 00:00:00 2001 From: lizhensheng Date: Wed, 29 Apr 2026 16:46:59 +0800 Subject: [PATCH 1/3] fix(workflow-template): extract steps by type and add ordering tests for review nodes --- .../mockApi/sqle/workflowTemplate/data.ts | 61 ++ .../mockApi/sqle/workflowTemplate/index.ts | 13 +- .../__snapshots__/index.test.tsx.snap | 530 +++++++++++++++++- .../UpdateWorkflowTemplate/index.test.tsx | 77 +++ .../UpdateWorkflowTemplate/index.tsx | 31 +- .../WorkflowTemplateDetail/enum.ts | 6 + .../WorkflowTemplateDetail/index.test.tsx | 83 ++- .../WorkflowTemplateDetail/index.tsx | 33 +- 8 files changed, 819 insertions(+), 15 deletions(-) create mode 100644 packages/sqle/src/page/WorkflowTemplate/WorkflowTemplateDetail/enum.ts diff --git a/packages/shared/lib/testUtil/mockApi/sqle/workflowTemplate/data.ts b/packages/shared/lib/testUtil/mockApi/sqle/workflowTemplate/data.ts index dea106eebc..49bd458775 100644 --- a/packages/shared/lib/testUtil/mockApi/sqle/workflowTemplate/data.ts +++ b/packages/shared/lib/testUtil/mockApi/sqle/workflowTemplate/data.ts @@ -60,6 +60,67 @@ export const dataExportWorkflowTemplateData: IWorkflowTemplateDetailResV1 = { workflow_type: WorkflowTemplateDetailResV1WorkflowTypeEnum.data_export }; +/** + * Steps returned from API in wrong order (sql_execute first, then sql_review by descending number). + * Used to verify that the frontend correctly extracts steps by type and sorts review steps by number. + * Expected result after processing: + * reviewSteps (sorted by number): [number:1 sql_review, number:2 sql_review] + * execStep: number:3 sql_execute + */ +export const workflowTemplateOutOfOrderData = { + ...workflowTemplateData, + workflow_step_template_list: [ + { + approved_by_authorized: false, + assignee_user_id_list: [], + execute_by_authorized: true, + number: 3, + type: 'sql_execute' + }, + { + approved_by_authorized: false, + assignee_user_id_list: ['1739544663515205632'], + desc: 'step desc', + execute_by_authorized: false, + number: 2, + type: 'sql_review' + }, + { + approved_by_authorized: true, + assignee_user_id_list: [], + execute_by_authorized: false, + number: 1, + type: 'sql_review' + } + ] +}; + +/** + * Export steps returned from API in wrong order (export_execute first). + * Expected result after processing: + * reviewSteps (sorted by number): [number:1 export_review] + * execStep: number:2 export_execute + */ +export const dataExportWorkflowTemplateOutOfOrderData: IWorkflowTemplateDetailResV1 = { + ...dataExportWorkflowTemplateData, + workflow_step_template_list: [ + { + approved_by_authorized: false, + assignee_user_id_list: [], + execute_by_authorized: true, + number: 2, + type: 'export_execute' + }, + { + approved_by_authorized: true, + assignee_user_id_list: [], + execute_by_authorized: false, + number: 1, + type: 'export_review' + } + ] +}; + export const workflowTemplateListData = [ workflowTemplateData, dataExportWorkflowTemplateData diff --git a/packages/shared/lib/testUtil/mockApi/sqle/workflowTemplate/index.ts b/packages/shared/lib/testUtil/mockApi/sqle/workflowTemplate/index.ts index 819cf80a27..dbc452b7a7 100644 --- a/packages/shared/lib/testUtil/mockApi/sqle/workflowTemplate/index.ts +++ b/packages/shared/lib/testUtil/mockApi/sqle/workflowTemplate/index.ts @@ -1,6 +1,10 @@ import workflow from '../../../../api/sqle/service/workflow'; import { MockSpyApy, createSpySuccessResponse } from '../../common'; -import { workflowTemplateData, workflowTemplateListData } from './data'; +import { + workflowTemplateData, + dataExportWorkflowTemplateData, + workflowTemplateListData +} from './data'; import { cloneDeep } from 'lodash'; class MockWorkflowTemplateApi implements MockSpyApy { @@ -19,7 +23,12 @@ class MockWorkflowTemplateApi implements MockSpyApy { public getWorkflowTemplate() { const spy = jest.spyOn(workflow, 'getWorkflowTemplateV1'); - spy.mockImplementation(() => { + spy.mockImplementation((params) => { + if (params.workflow_type === 'data_export') { + return createSpySuccessResponse({ + data: cloneDeep(dataExportWorkflowTemplateData) + }); + } return createSpySuccessResponse({ data: cloneDeep(workflowTemplateData) }); diff --git a/packages/sqle/src/page/WorkflowTemplate/UpdateWorkflowTemplate/__snapshots__/index.test.tsx.snap b/packages/sqle/src/page/WorkflowTemplate/UpdateWorkflowTemplate/__snapshots__/index.test.tsx.snap index db6f251891..196c75ce8d 100644 --- a/packages/sqle/src/page/WorkflowTemplate/UpdateWorkflowTemplate/__snapshots__/index.test.tsx.snap +++ b/packages/sqle/src/page/WorkflowTemplate/UpdateWorkflowTemplate/__snapshots__/index.test.tsx.snap @@ -692,6 +692,532 @@ exports[`page/WorkflowTemplate/UpdateWorkflowTemplate change workflow template n `; +exports[`page/WorkflowTemplate/UpdateWorkflowTemplate data_export workflow type should correctly identify export_execute as exec step when API returns steps in wrong order 1`] = ` + +