Skip to content

Commit 557431d

Browse files
Added OpenAPI removeOperationIdPrefix test (#633)
1 parent 9e1dc2e commit 557431d

File tree

9 files changed

+1963
-36
lines changed

9 files changed

+1963
-36
lines changed

datamodel/openapi/openapi-generator/src/test/java/com/sap/cloud/sdk/datamodel/openapi/generator/DataModelGeneratorIntegrationTest.java

Lines changed: 45 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.nio.file.Files;
1010
import java.nio.file.Path;
1111
import java.nio.file.Paths;
12+
import java.util.Map;
1213
import java.util.function.Predicate;
1314

1415
import org.junit.jupiter.api.io.TempDir;
@@ -20,14 +21,12 @@
2021
import com.sap.cloud.sdk.datamodel.openapi.generator.model.GenerationResult;
2122

2223
import io.vavr.control.Try;
23-
import lombok.AllArgsConstructor;
2424
import lombok.RequiredArgsConstructor;
2525
import lombok.SneakyThrows;
2626

2727
class DataModelGeneratorIntegrationTest
2828
{
2929
@RequiredArgsConstructor
30-
@AllArgsConstructor
3130
private enum TestCase
3231
{
3332
API_CLASS_FOR_AI_SDK(
@@ -38,42 +37,43 @@ private enum TestCase
3837
ApiMaturity.RELEASED,
3938
true,
4039
6,
41-
null,
42-
null,
43-
null,
44-
"true"),
40+
Map.of("aiSdkConstructor", "true")),
4541
API_CLASS_VENDOR_EXTENSION_YAML(
4642
"api-class-vendor-extension-yaml",
4743
"sodastore.yaml",
4844
"com.sap.cloud.sdk.services.apiclassvendorextension.api",
4945
"com.sap.cloud.sdk.services.apiclassvendorextension.model",
5046
ApiMaturity.RELEASED,
5147
false,
52-
4),
48+
4,
49+
Map.of()),
5350
API_CLASS_VENDOR_EXTENSION_JSON(
5451
"api-class-vendor-extension-json",
5552
"sodastore.json",
5653
"com.sap.cloud.sdk.services.apiclassvendorextension.api",
5754
"com.sap.cloud.sdk.services.apiclassvendorextension.model",
5855
ApiMaturity.RELEASED,
5956
false,
60-
6),
57+
6,
58+
Map.of()),
6159
INPUT_SPEC_WITH_UPPERCASE_FILE_EXTENSION(
6260
"input-spec-with-uppercase-file-extension",
6361
"sodastore.JSON",
6462
"com.sap.cloud.sdk.services.uppercasefileextension.api",
6563
"com.sap.cloud.sdk.services.uppercasefileextension.model",
6664
ApiMaturity.RELEASED,
6765
false,
68-
6),
66+
6,
67+
Map.of()),
6968
INPUT_SPEC_WITH_ANYOF_ONEOF(
7069
"input-spec-with-anyof-oneof",
7170
"AggregatorNestedSchemaChild.json",
7271
"com.sap.cloud.sdk.services.anyofoneof.api",
7372
"com.sap.cloud.sdk.services.anyofoneof.model",
7473
ApiMaturity.RELEASED,
7574
true,
76-
7),
75+
7,
76+
Map.of()),
7777
INPUT_SPEC_WITH_BUILDER(
7878
"input-spec-with-builder",
7979
"sodastore.JSON",
@@ -82,10 +82,30 @@ private enum TestCase
8282
ApiMaturity.RELEASED,
8383
true,
8484
6,
85-
"builder",
86-
"build",
87-
"private",
88-
null),;
85+
Map
86+
.of(
87+
"pojoBuilderMethodName",
88+
"builder",
89+
"pojoBuildMethodName",
90+
"build",
91+
"pojoConstructorVisibility",
92+
"private")),
93+
REMOVE_OPERATION_ID_PREFIX(
94+
"remove-operation-id-prefix",
95+
"sodastore.json",
96+
"com.sap.cloud.sdk.services.builder.api",
97+
"com.sap.cloud.sdk.services.builder.model",
98+
ApiMaturity.RELEASED,
99+
true,
100+
6,
101+
Map
102+
.of(
103+
"removeOperationIdPrefix",
104+
"true",
105+
"removeOperationIdPrefixDelimiter",
106+
"\\.",
107+
"removeOperationIdPrefixCount",
108+
"3")),;
89109

90110
final String testCaseName;
91111
final String inputSpecFileName;
@@ -94,10 +114,7 @@ private enum TestCase
94114
final ApiMaturity apiMaturity;
95115
final boolean anyOfOneOfGenerationEnabled;
96116
final int expectedNumberOfGeneratedFiles;
97-
String methodBuilder = null;
98-
String methodBuild = null;
99-
String constructorVisibility = null;
100-
String aiSdkConstructor = null;
117+
final Map<String, String> additionalProperties;
101118
}
102119

103120
@ParameterizedTest
@@ -115,7 +132,7 @@ void integrationTests( final TestCase testCase, @TempDir final Path path )
115132
assertThat(tempOutputDirectory).exists().isReadable().isDirectory();
116133
assertThat(comparisonDirectory).exists().isReadable().isDirectory();
117134

118-
final GenerationConfiguration generationConfiguration =
135+
final var generationConfiguration =
119136
GenerationConfiguration
120137
.builder()
121138
.apiPackage(testCase.apiPackageName)
@@ -125,15 +142,11 @@ void integrationTests( final TestCase testCase, @TempDir final Path path )
125142
.outputDirectory(tempOutputDirectory.toAbsolutePath().toString())
126143
.withSapCopyrightHeader(true)
127144
.oneOfAnyOfGenerationEnabled(testCase.anyOfOneOfGenerationEnabled)
128-
.additionalProperty("useAbstractionForFiles", "true")
129-
.additionalProperty("pojoBuilderMethodName", testCase.methodBuilder)
130-
.additionalProperty("pojoBuildMethodName", testCase.methodBuild)
131-
.additionalProperty("pojoConstructorVisibility", testCase.constructorVisibility)
132-
.additionalProperty("aiSdkConstructor", testCase.aiSdkConstructor)
133-
.build();
145+
.additionalProperty("useAbstractionForFiles", "true");
146+
testCase.additionalProperties.forEach(generationConfiguration::additionalProperty);
134147

135148
final Try<GenerationResult> maybeGenerationResult =
136-
new DataModelGenerator().generateDataModel(generationConfiguration);
149+
new DataModelGenerator().generateDataModel(generationConfiguration.build());
137150

138151
assertThat(maybeGenerationResult.get().getGeneratedFiles()).hasSize(testCase.expectedNumberOfGeneratedFiles);
139152

@@ -152,7 +165,7 @@ void generateDataModelForComparison( final TestCase testCase )
152165
assertThat(inputDirectory).exists().isReadable().isDirectory();
153166
assertThat(outputDirectory).exists().isReadable().isDirectory();
154167

155-
final GenerationConfiguration generationConfiguration =
168+
final var generationConfiguration =
156169
GenerationConfiguration
157170
.builder()
158171
.apiPackage(testCase.apiPackageName)
@@ -163,14 +176,11 @@ void generateDataModelForComparison( final TestCase testCase )
163176
.deleteOutputDirectory(true)
164177
.withSapCopyrightHeader(true)
165178
.oneOfAnyOfGenerationEnabled(testCase.anyOfOneOfGenerationEnabled)
166-
.additionalProperty("useAbstractionForFiles", "true")
167-
.additionalProperty("pojoBuilderMethodName", testCase.methodBuilder)
168-
.additionalProperty("pojoBuildMethodName", testCase.methodBuild)
169-
.additionalProperty("pojoConstructorVisibility", testCase.constructorVisibility)
170-
.additionalProperty("aiSdkConstructor", testCase.aiSdkConstructor)
171-
.build();
172-
173-
new DataModelGenerator().generateDataModel(generationConfiguration);
179+
.additionalProperty("useAbstractionForFiles", "true");
180+
testCase.additionalProperties.forEach(generationConfiguration::additionalProperty);
181+
182+
GenerationConfiguration build = generationConfiguration.build();
183+
new DataModelGenerator().generateDataModel(build);
174184
}
175185

176186
private static Path getInputDirectory( final TestCase testCase )

0 commit comments

Comments
 (0)