|
2 | 2 |
|
3 | 3 | import io.swagger.codegen.v3.CodegenArgument;
|
4 | 4 | import io.swagger.codegen.v3.CodegenConstants;
|
| 5 | +import io.swagger.codegen.v3.CodegenModel; |
| 6 | +import io.swagger.codegen.v3.CodegenProperty; |
5 | 7 | import io.swagger.codegen.v3.CodegenType;
|
6 | 8 | import io.swagger.v3.oas.models.OpenAPI;
|
7 | 9 | import io.swagger.v3.oas.models.Operation;
|
|
10 | 12 | import org.testng.Assert;
|
11 | 13 | import org.testng.annotations.Test;
|
12 | 14 |
|
| 15 | +import java.util.ArrayList; |
| 16 | +import java.util.Collections; |
| 17 | +import java.util.HashMap; |
13 | 18 | import java.util.List;
|
| 19 | +import java.util.Map; |
14 | 20 |
|
15 | 21 | public class AbstractJavaCodegenTest {
|
16 | 22 |
|
@@ -163,6 +169,126 @@ public void testPackageNamesSetWithAdditionalProperties() throws Exception {
|
163 | 169 | Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG), Boolean.TRUE);
|
164 | 170 | }
|
165 | 171 |
|
| 172 | + @Test |
| 173 | + public void testFixUpParentAndInterfaces_propertyNameDifferent_getterSetterSame_typeDifferent() { |
| 174 | + AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); |
| 175 | + |
| 176 | + CodegenModel parentModel = new CodegenModel(); |
| 177 | + parentModel.name = "parent_type"; |
| 178 | + CodegenModel childModel = new CodegenModel(); |
| 179 | + childModel.name = "child_type"; |
| 180 | + childModel.parentModel = parentModel; |
| 181 | + parentModel.children = new ArrayList<>(); |
| 182 | + |
| 183 | + CodegenProperty parentValueProperty1 = new CodegenProperty(); |
| 184 | + parentValueProperty1.name = "value"; |
| 185 | + parentValueProperty1.baseName = "value"; |
| 186 | + parentValueProperty1.getter = "getValue"; |
| 187 | + parentValueProperty1.setter = "setValue"; |
| 188 | + parentValueProperty1.datatype = "value_type"; |
| 189 | + CodegenProperty parentValueProperty2 = new CodegenProperty(); |
| 190 | + parentValueProperty2.name = "other_value"; |
| 191 | + parentValueProperty2.baseName = "other_value"; |
| 192 | + parentValueProperty2.getter = "getOtherValue"; |
| 193 | + parentValueProperty2.setter = "setOtherValue"; |
| 194 | + parentValueProperty2.datatype = "other_type"; |
| 195 | + parentModel.vars = new ArrayList<>(); |
| 196 | + parentModel.vars.add(parentValueProperty1); |
| 197 | + parentModel.vars.add(parentValueProperty2); |
| 198 | + |
| 199 | + CodegenProperty childValueProperty1 = new CodegenProperty(); |
| 200 | + childValueProperty1.name = "_value"; // different to parent "value" |
| 201 | + childValueProperty1.baseName = "_value"; |
| 202 | + childValueProperty1.getter = "getValue"; // same as parent "getValue" |
| 203 | + childValueProperty1.setter = "setValue"; // same as parent "setValue" |
| 204 | + childValueProperty1.datatype = "different_type"; // different to parent "value_type" |
| 205 | + CodegenProperty childValueProperty2 = new CodegenProperty(); |
| 206 | + childValueProperty2.name = "third_value"; |
| 207 | + childValueProperty2.baseName = "third_value"; |
| 208 | + childValueProperty2.getter = "getThirdValue"; |
| 209 | + childValueProperty2.setter = "setThirdValue"; |
| 210 | + childValueProperty2.datatype = "other_type"; |
| 211 | + childModel.vars = new ArrayList<>(); |
| 212 | + childModel.vars.add(childValueProperty1); |
| 213 | + childModel.vars.add(childValueProperty2); |
| 214 | + |
| 215 | + Map<String, CodegenModel> allModels = new HashMap<>(); |
| 216 | + allModels.put(parentModel.name, parentModel); |
| 217 | + allModels.put(childModel.name, childModel); |
| 218 | + |
| 219 | + codegen.fixUpParentAndInterfaces(childModel, Collections.EMPTY_MAP); |
| 220 | + Assert.assertEquals(childModel.vars.get(0).baseName, "_value"); |
| 221 | + Assert.assertEquals(childModel.vars.get(0).name, "childTypeValue"); |
| 222 | + Assert.assertEquals(childModel.vars.get(0).getter, "getChildTypeValue"); |
| 223 | + Assert.assertEquals(childModel.vars.get(0).setter, "setChildTypeValue"); |
| 224 | + |
| 225 | + // unchanged |
| 226 | + Assert.assertEquals(childModel.vars.get(1).baseName, childValueProperty2.baseName); |
| 227 | + Assert.assertEquals(childModel.vars.get(1).name, childValueProperty2.name); |
| 228 | + Assert.assertEquals(childModel.vars.get(1).getter, childValueProperty2.getter); |
| 229 | + Assert.assertEquals(childModel.vars.get(1).setter, childValueProperty2.setter); |
| 230 | + } |
| 231 | + |
| 232 | + @Test |
| 233 | + public void testFixUpParentAndInterfaces_propertyNameSame_getterSetterSame_typeDifferent() { |
| 234 | + AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); |
| 235 | + |
| 236 | + CodegenModel parentModel = new CodegenModel(); |
| 237 | + parentModel.name = "parent_type"; |
| 238 | + CodegenModel childModel = new CodegenModel(); |
| 239 | + childModel.name = "child_type"; |
| 240 | + childModel.parentModel = parentModel; |
| 241 | + parentModel.children = new ArrayList<>(); |
| 242 | + |
| 243 | + CodegenProperty parentValueProperty1 = new CodegenProperty(); |
| 244 | + parentValueProperty1.name = "value"; |
| 245 | + parentValueProperty1.baseName = "value"; |
| 246 | + parentValueProperty1.getter = "getValue"; |
| 247 | + parentValueProperty1.setter = "setValue"; |
| 248 | + parentValueProperty1.datatype = "value_type"; |
| 249 | + CodegenProperty parentValueProperty2 = new CodegenProperty(); |
| 250 | + parentValueProperty2.name = "other_value"; |
| 251 | + parentValueProperty2.baseName = "other_value"; |
| 252 | + parentValueProperty2.getter = "getOtherValue"; |
| 253 | + parentValueProperty2.setter = "setOtherValue"; |
| 254 | + parentValueProperty2.datatype = "other_type"; |
| 255 | + parentModel.vars = new ArrayList<>(); |
| 256 | + parentModel.vars.add(parentValueProperty1); |
| 257 | + parentModel.vars.add(parentValueProperty2); |
| 258 | + |
| 259 | + CodegenProperty childValueProperty1 = new CodegenProperty(); |
| 260 | + childValueProperty1.name = "value"; // same as parent "value" |
| 261 | + childValueProperty1.baseName = "value"; |
| 262 | + childValueProperty1.getter = "getValue"; // same as parent "getValue" |
| 263 | + childValueProperty1.setter = "setValue"; // same as parent "setValue" |
| 264 | + childValueProperty1.datatype = "different_type"; // different to parent "value_type" |
| 265 | + CodegenProperty childValueProperty2 = new CodegenProperty(); |
| 266 | + childValueProperty2.name = "third_value"; |
| 267 | + childValueProperty2.baseName = "third_value"; |
| 268 | + childValueProperty2.getter = "getThirdValue"; |
| 269 | + childValueProperty2.setter = "setThirdValue"; |
| 270 | + childValueProperty2.datatype = "other_type"; |
| 271 | + childModel.vars = new ArrayList<>(); |
| 272 | + childModel.vars.add(childValueProperty1); |
| 273 | + childModel.vars.add(childValueProperty2); |
| 274 | + |
| 275 | + Map<String, CodegenModel> allModels = new HashMap<>(); |
| 276 | + allModels.put(parentModel.name, parentModel); |
| 277 | + allModels.put(childModel.name, childModel); |
| 278 | + |
| 279 | + codegen.fixUpParentAndInterfaces(childModel, Collections.EMPTY_MAP); |
| 280 | + Assert.assertEquals(childModel.vars.get(0).baseName, "value"); |
| 281 | + Assert.assertEquals(childModel.vars.get(0).name, "childTypeValue"); |
| 282 | + Assert.assertEquals(childModel.vars.get(0).getter, "getChildTypeValue"); |
| 283 | + Assert.assertEquals(childModel.vars.get(0).setter, "setChildTypeValue"); |
| 284 | + |
| 285 | + // unchanged |
| 286 | + Assert.assertEquals(childModel.vars.get(1).baseName, childValueProperty2.baseName); |
| 287 | + Assert.assertEquals(childModel.vars.get(1).name, childValueProperty2.name); |
| 288 | + Assert.assertEquals(childModel.vars.get(1).getter, childValueProperty2.getter); |
| 289 | + Assert.assertEquals(childModel.vars.get(1).setter, childValueProperty2.setter); |
| 290 | + } |
| 291 | + |
166 | 292 | public static class P_AbstractJavaCodegen extends AbstractJavaCodegen {
|
167 | 293 | @Override
|
168 | 294 | public String getArgumentsLocation() {
|
|
0 commit comments