Created by: ybelenko
PR checklist
-
Read the contribution guidelines. -
If contributing template-only or documentation-only changes which will change sample output, build the project before. -
Run the shell script(s) under ./bin/
(or Windows batch scripts under.\bin\windows
) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run./bin/{LANG}-petstore.sh
,./bin/openapi3/{LANG}-petstore.sh
if updating the code or mustache templates for a language ({LANG}
) (e.g. php, ruby, python, etc). -
File the PR against the correct branch: master
,4.3.x
,5.0.x
. Default:master
. -
Copy the technical committee to review the pull request if your PR is targeting a particular programming language.
My first version of DataMocker
is almost finished. The only thing that makes everything difficult is refs. For example, to mock schema like:
{
"type": "object",
"properties": {
"Objects": {
"minItems": 1,
"type": "array",
"items": {
"$ref": "#/components/schemas/_foobar_Objects"
}
}
}
}
then I need to parse $ref
value, convert it to model name and find FoobarObjects
model. The most closes method that I found is ModelUtils::getSimpleRef
https://github.com/OpenAPITools/openapi-generator/blob/27bf120d8729b7e0b4250ad1147ad1a186b4b054/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java#L326-L339
So I've recreated this method with PHP... and three other methods(AbstractPhpCodegen ::toModelName
, AbstractPhpCodegen::camelize
, AbstractPhpCodegen::isReservedWord
). I'm sure that I don't need to add links to these methods, core team knows them well.
Btw, it's hard to understand what this block of code does https://github.com/OpenAPITools/openapi-generator/blob/27bf120d8729b7e0b4250ad1147ad1a186b4b054/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/StringUtils.java#L90-L97 especially this line https://github.com/OpenAPITools/openapi-generator/blob/27bf120d8729b7e0b4250ad1147ad1a186b4b054/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/StringUtils.java#L95
How to test
Show boring command line instructions
- Checkout into feature branch
$ git checkout -b ybelenko-slim4_utils master
$ git pull https://github.com/ybelenko/openapi-generator.git slim4_utils
- Generate new Slim4 samples and go to just created build
$ mvn clean package
$ bin/php-slim4-server-petstore.sh
$ cd samples/server/petstore/php-slim4
- Start Composer installation and run unit tests
$ composer install
$ composer test
$ composer phpcs
❗ ️
Test fixtures wanted Show details
Right now Java methods ModelUtils::getSimpleRef
,AbstractPhpCodegen::toModelName
and AbstractPhpCodegen::camelize
are not covered with tests. If somebody can provide fixtures for any of these methods I would love to submit PR with related unit tests.
Related to #3545 (closed)
cc @jebentier, @dkarlovi, @mandrean, @jfastnacht, @ackintosh, @renepardon
Special welcome to @jimschubert