5
5
import io .swagger .v3 .oas .models .Operation ;
6
6
import io .swagger .v3 .oas .models .media .Schema ;
7
7
import io .swagger .v3 .oas .models .responses .ApiResponse ;
8
+ import org .openapitools .codegen .CliOption ;
8
9
import org .openapitools .codegen .CodegenConfig ;
9
10
import org .openapitools .codegen .CodegenDiscriminator ;
10
11
import org .openapitools .codegen .CodegenModel ;
16
17
import org .openapitools .codegen .model .OperationsMap ;
17
18
import org .openapitools .codegen .utils .ModelUtils ;
18
19
20
+ import java .io .File ;
19
21
import java .util .HashMap ;
20
22
import java .util .List ;
21
23
import java .util .Map ;
26
28
// https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java
27
29
// https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java
28
30
public class LineBotSdkNodejsGeneratorGenerator extends TypeScriptNodeClientCodegen implements CodegenConfig {
31
+ protected String outputTestFolder = "" ;
32
+ public static final String TEST_OUTPUT = "testOutput" ;
33
+ public static final String DEFAULT_TEST_FOLDER = "${project.build.directory}/generated-test-sources/openapi" ;
34
+ protected String testFolder = "tests" ;
29
35
30
36
/**
31
37
* Configures the type of generator.
@@ -87,6 +93,33 @@ public LineBotSdkNodejsGeneratorGenerator() {
87
93
embeddedTemplateDir = templateDir = "line-bot-sdk-nodejs-generator" ;
88
94
typeMapping .put ("file" , "Blob" );
89
95
languageSpecificPrimitives .add ("Blob" );
96
+ apiTestTemplateFiles .put ("api_test.mustache" , ".spec.ts" );
97
+ cliOptions .add (CliOption .newString (TEST_OUTPUT , "Set output folder for models and APIs tests" ).defaultValue (DEFAULT_TEST_FOLDER ));
98
+ }
99
+
100
+ @ Override
101
+ public void processOpts () {
102
+ super .processOpts ();
103
+ if (additionalProperties .containsKey (TEST_OUTPUT )) {
104
+ setOutputTestFolder (additionalProperties .get (TEST_OUTPUT ).toString ());
105
+ }
106
+ }
107
+
108
+ @ Override
109
+ public String apiTestFileFolder () {
110
+ return (outputTestFolder + File .separator + testFolder + File .separator + apiPackage ().replace ('.' , File .separatorChar )).replace ('/' , File .separatorChar );
111
+ }
112
+
113
+ @ Override
114
+ public void setOutputDir (String dir ) {
115
+ super .setOutputDir (dir );
116
+ if (this .outputTestFolder .isEmpty ()) {
117
+ setOutputTestFolder (dir );
118
+ }
119
+ }
120
+
121
+ public void setOutputTestFolder (String outputTestFolder ) {
122
+ this .outputTestFolder = outputTestFolder ;
90
123
}
91
124
92
125
@ Override
@@ -100,7 +133,7 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
100
133
if (cm .getParentModel () != null ) {
101
134
CodegenDiscriminator discriminator = cm .getParentModel ().getDiscriminator ();
102
135
Optional <String > mappingNameOptional = discriminator .getMappedModels ().stream ().filter (
103
- it -> it .getModelName ().equals (cm .name )
136
+ it -> it .getModelName ().equals (cm .name )
104
137
).map (CodegenDiscriminator .MappedModel ::getMappingName ).findFirst ();
105
138
mappingNameOptional .ifPresent (mappingName -> {
106
139
Map <String , Object > selector = new HashMap <>();
@@ -131,18 +164,18 @@ protected void handleMethodResponse(Operation operation,
131
164
@ Override
132
165
protected ImmutableMap .Builder <String , Mustache .Lambda > addMustacheLambdas () {
133
166
return super .addMustacheLambdas ()
134
- .put ("endpoint" , (fragment , writer ) -> {
135
- String text = fragment .execute ();
136
- writer .write (this .getEndpointFromClassName (text ));
137
- })
138
- .put ("lower" , (fragment , writer ) -> {
139
- String text = fragment .execute ();
140
- writer .write (text .toLowerCase ());
141
- })
142
- .put ("pathReplace" , ((fragment , writer ) -> {
143
- String text = fragment .execute ();
144
- writer .write (pathReplacer (text ));
145
- }));
167
+ .put ("endpoint" , (fragment , writer ) -> {
168
+ String text = fragment .execute ();
169
+ writer .write (this .getEndpointFromClassName (text ));
170
+ })
171
+ .put ("lower" , (fragment , writer ) -> {
172
+ String text = fragment .execute ();
173
+ writer .write (text .toLowerCase ());
174
+ })
175
+ .put ("pathReplace" , ((fragment , writer ) -> {
176
+ String text = fragment .execute ();
177
+ writer .write (pathReplacer (text ));
178
+ }));
146
179
}
147
180
148
181
private String getEndpointFromClassName (String className ) {
0 commit comments