-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[typescript-fetch] Fixed issue where unique arrays (sets) of primitive values aren't initialized properly #19521
[typescript-fetch] Fixed issue where unique arrays (sets) of primitive values aren't initialized properly #19521
Conversation
b91326c
to
e9ab486
Compare
As it's my first time contributing to this project, I'm a bit unsure on the best way of testing this change. I think ideally it would be great if there were some assertions for validating that cc: @TiFu @taxpon @sebastianhaas @kenisteward @Vrolijkx @macjohnny @topce @akehir @petejohansonxo @amakhrov @davidgamero @mkusaka as the technical committee for this area. |
@davidomid you can add a test of the generated typescript, running typescript code, in https://github.com/OpenAPITools/openapi-generator/blob/master/samples/client/petstore/typescript-fetch/tests/default/test/PetApi.ts or alternatively, you can add a java test in https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchModelTest.java but in this case, i guess its fine without writing a new test, since the generated samples are used as manual verification by human reviewers |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for your contribution!
the type in the interface is Set, so your change fixes that in the deserialization:
openapi-generator/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Pet.ts
Line 58 in e914c40
photoUrls: Set<string>; |
Resolves #19520
This PR aims to fix the above bug, by ensuring that set properties from API responses are correctly initialized as sets instead of being passed directly as arrays.
Explanation of the
modelGeneric.mustache
changeisPrimitiveType
appears to be true for arrays which contain primitives, not just for primitives themselves. Because of the template conditions, this means that arrays of primitives were being passed verbatim from the API response.This logic is fine for regular arrays, but for sets this causes a problem, as the values aren't being converted to a
Set
after being retrieved from the API. This leads to issues where the client thinks the property is aSet
, but it's actually an array. The outcome of this is that accessingSet
members such assize
won't work at runtime, but trying to accesslength
will cause a TypeScript compilation error.This PR aims to fix this problem by adjusting the logic in
modelGeneric.mustache
to correctly handle arrays of primitives which contain unique items.PR checklist
Commit all changed files.
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*
.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master
(upcoming 7.6.0 minor release - breaking changes with fallbacks),8.0.x
(breaking changes without fallbacks)