Skip to content

Commit b473b2d

Browse files
committed
fix(orchestrator): fixes v2/instances endpoint
The `start` and `end` fields are annotated as `strings` instead of `Date`. The format of the string is provided as a hint for the developer as a comment (date-time) due to limitations in the OpenAPI code generator.
1 parent 95cad79 commit b473b2d

File tree

12 files changed

+42
-36
lines changed

12 files changed

+42
-36
lines changed

plugins/orchestrator-backend/src/service/api/mapping/V2Mappings.test.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -133,30 +133,30 @@ describe('scenarios to verify mapWorkflowCategoryDTOFromString', () => {
133133
describe('scenarios to verify mapToProcessInstanceDTO', () => {
134134
it('correctly maps ProcessInstanceDTO for not completed workflow', () => {
135135
// Arrange
136-
const processIntanceV1: ProcessInstance = generateProcessInstance(1);
137-
processIntanceV1.end = undefined;
136+
const processInstanceV1: ProcessInstance = generateProcessInstance(1);
137+
processInstanceV1.end = undefined;
138138

139139
// Act
140-
const result = mapToProcessInstanceDTO(processIntanceV1);
140+
const result = mapToProcessInstanceDTO(processInstanceV1);
141141

142142
// Assert
143143
expect(result).toBeDefined();
144144
expect(result.id).toBeDefined();
145145
expect(result.start).toBeDefined();
146-
expect(result.start).toEqual(processIntanceV1.start?.toUTCString());
146+
expect(result.start).toEqual(processInstanceV1.start);
147147
expect(result.end).toBeUndefined();
148148
expect(result.duration).toBeUndefined();
149149
expect(result.status).toEqual(
150-
getProcessInstancesDTOFromString(processIntanceV1.state),
150+
getProcessInstancesDTOFromString(processInstanceV1.state),
151151
);
152-
expect(result.description).toEqual(processIntanceV1.description);
152+
expect(result.description).toEqual(processInstanceV1.description);
153153
expect(result.category).toEqual('infrastructure');
154154
expect(result.workflowdata).toEqual(
155155
// @ts-ignore
156-
processIntanceV1?.variables?.workflowdata,
156+
processInstanceV1?.variables?.workflowdata,
157157
);
158158
expect(result.workflow).toEqual(
159-
processIntanceV1.processName ?? processIntanceV1.processId,
159+
processInstanceV1.processName ?? processInstanceV1.processId,
160160
);
161161
});
162162
it('correctly maps ProcessInstanceDTO', () => {
@@ -171,16 +171,16 @@ describe('scenarios to verify mapToProcessInstanceDTO', () => {
171171

172172
// Assert
173173
expect(result.id).toBeDefined();
174-
expect(result.start).toEqual(processIntanceV1.start?.toUTCString());
174+
expect(result.start).toEqual(processIntanceV1.start);
175175
expect(result.end).toBeDefined();
176-
expect(result.end).toEqual(processIntanceV1.end!.toUTCString());
176+
expect(result.end).toEqual(processIntanceV1.end);
177177
expect(result.duration).toEqual(duration);
178178

179179
expect(result).toBeDefined();
180180
expect(result.status).toEqual(
181181
getProcessInstancesDTOFromString(processIntanceV1.state),
182182
);
183-
expect(result.end).toEqual(processIntanceV1.end?.toUTCString());
183+
expect(result.end).toEqual(processIntanceV1.end);
184184
expect(result.duration).toEqual(duration);
185185
expect(result.duration).toEqual('an hour');
186186
expect(result.description).toEqual(processIntanceV1.description);

plugins/orchestrator-backend/src/service/api/mapping/V2Mappings.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,10 @@ export function mapToProcessInstanceDTO(
115115
description: processInstance.description,
116116
id: processInstance.id,
117117
name: processInstance.processName,
118-
// To be fixed https://issues.redhat.com/browse/FLPATH-950
119118
// @ts-ignore
120119
workflowdata: variables?.workflowdata,
121-
start: processInstance.start?.toUTCString(),
122-
end: processInstance.end?.toUTCString(),
120+
start: processInstance.start,
121+
end: processInstance.end,
123122
duration: duration,
124123
status: getProcessInstancesDTOFromString(processInstance.state),
125124
workflow: processInstance.processName ?? processInstance.processId,

plugins/orchestrator-backend/src/service/api/test-utils.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import moment from 'moment';
2+
13
import {
24
ProcessInstance,
35
ProcessInstanceState,
@@ -11,8 +13,8 @@ import {
1113
WorkflowOverviewListResult,
1214
} from '@janus-idp/backstage-plugin-orchestrator-common';
1315

14-
const baseDate = new Date('2023-02-19T11:45:21.123Z');
15-
const HOUR = 60 * 60 * 1000;
16+
const BASE_DATE = '2023-02-19T11:45:21.123Z';
17+
1618
interface WorkflowOverviewParams {
1719
suffix?: string;
1820
workflowId?: string;
@@ -108,8 +110,8 @@ export function generateProcessInstance(id: number): ProcessInstance {
108110
processName: `name${id}`,
109111
processId: `proceesId${id}`,
110112
state: ProcessInstanceState.Active,
111-
start: baseDate,
112-
end: new Date(baseDate.getTime() + 1 * HOUR),
113+
start: BASE_DATE,
114+
end: moment(BASE_DATE).add(1, 'hour').toISOString(),
113115
nodes: [],
114116
endpoint: 'enpoint/foo',
115117
serviceUrl: 'service/bar',

plugins/orchestrator-backend/src/service/api/v2.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export class V2 {
8383
await this.orchestratorService.fetchInstancesTotalCount();
8484

8585
const result: ProcessInstanceListResultDTO = {
86-
items: instances?.map(def => mapToProcessInstanceDTO(def)),
86+
items: instances?.map(mapToProcessInstanceDTO),
8787
paginationInfo: {
8888
pageSize: pagination.limit,
8989
page: pagination.offset,
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6402a247771358df06084a0bfb0b121f10863699
1+
c08a31a11117fd1abcac1583040168090f5ca984

plugins/orchestrator-common/src/auto-generated/api/definition.ts

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

plugins/orchestrator-common/src/auto-generated/api/models/schema.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,9 @@ export interface components {
128128
name?: string;
129129
workflow?: string;
130130
status?: components['schemas']['ProcessInstanceStatusDTO'];
131+
/** Format: date-time */
131132
start?: string;
133+
/** Format: date-time */
132134
end?: string;
133135
duration?: string;
134136
category?: components['schemas']['WorkflowCategoryDTO'];

plugins/orchestrator-common/src/auto-generated/docs/index.adoc/index.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,15 +1158,15 @@ The ErrorResponse object represents a common structure for handling errors in AP
11581158

11591159
| start
11601160
|
1161-
| String
1161+
| Date
11621162
|
1163-
|
1163+
| date-time
11641164

11651165
| end
11661166
|
1167-
| String
1167+
| Date
11681168
|
1169-
|
1169+
| date-time
11701170

11711171
| duration
11721172
|

plugins/orchestrator-common/src/models.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,10 @@ export interface ProcessInstance {
6767
nodes: NodeInstance[];
6868
milestones?: Milestone[];
6969
variables?: ProcessInstanceVariables | string;
70-
start?: Date;
71-
end?: Date;
70+
/** Format: date-time */
71+
start?: string;
72+
/** Format: date-time */
73+
end?: string;
7274
parentProcessInstance?: ProcessInstance;
7375
childProcessInstances?: ProcessInstance[];
7476
error?: ProcessInstanceError;

plugins/orchestrator-common/src/openapi/openapi.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,8 +430,10 @@ components:
430430
$ref: '#/components/schemas/ProcessInstanceStatusDTO'
431431
start:
432432
type: string
433+
format: 'date-time'
433434
end:
434435
type: string
436+
format: 'date-time'
435437
duration:
436438
type: string
437439
category:

0 commit comments

Comments
 (0)