Skip to content

Commit f17ca59

Browse files
daniel-kullmanndavidkna-sapdeekshas8
authored
fix: Handle arrays of enum strings correctly (#6156)
* Handle arrays of enum strings correctly Without this change an array of enums will result in e.g.: export type Model1 = { values: 'A' | 'B' | 'C'[]; } & Record<string, any>; which means the value can be either "A", "B", or "C"[], which is wrong. * chore: add tests covering array-of-enums types * chore: add changeset * chore: fmt * chore: move stringArrayEnum into TestEntity & rm singleValueArrayEnum * chore: remove outdated files --------- Co-authored-by: David Knaack <[email protected]> Co-authored-by: Deeksha Sinha <[email protected]>
1 parent 25386b1 commit f17ca59

File tree

14 files changed

+35
-63
lines changed

14 files changed

+35
-63
lines changed

.changeset/fair-ends-drop.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sap-cloud-sdk/openapi-generator': patch
3+
---
4+
5+
[Fixed Issue] Improve the handling of arrays of enums

packages/openapi-generator/src/file-serializer/schema.spec.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,18 @@ describe('serializeSchema for xOf schemas', () => {
303303
});
304304
});
305305

306+
it('serializes array schemas for enum', () => {
307+
expect(
308+
serializeSchema({
309+
type: 'array',
310+
items: {
311+
type: 'string',
312+
enum: ["'One'", "'Two'"]
313+
}
314+
})
315+
).toEqual("('One' | 'Two')[]");
316+
});
317+
306318
it('serializeSchema serializes not schema', () => {
307319
expect(
308320
serializeSchema({

packages/openapi-generator/src/file-serializer/schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export function serializeSchema(schema: OpenApiSchema): string {
3434
const type = serializeSchema(schema.items);
3535
return schema.uniqueItems
3636
? `Set<${type}>`
37-
: ['properties', 'allOf', 'oneOf', 'anyOf'].some(
37+
: ['properties', 'allOf', 'oneOf', 'anyOf', 'enum'].some(
3838
prop => prop in schema.items
3939
)
4040
? `(${type})[]`

test-packages/test-services-openapi/swagger-yaml-service/schema/test-entity-2.d.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

test-packages/test-services-openapi/swagger-yaml-service/schema/test-entity-2.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

test-packages/test-services-openapi/swagger-yaml-service/schema/test-entity-2.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

test-packages/test-services-openapi/swagger-yaml-service/schema/test-entity-2.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

test-packages/test-services-openapi/swagger-yaml-service/schema/test-entity-3.d.ts

Lines changed: 0 additions & 14 deletions
This file was deleted.

test-packages/test-services-openapi/swagger-yaml-service/schema/test-entity-3.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

test-packages/test-services-openapi/swagger-yaml-service/schema/test-entity-3.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)