|
| 1 | +package io.swagger.codegen.dart; |
| 2 | + |
| 3 | +import io.swagger.codegen.CodegenModel; |
| 4 | +import io.swagger.codegen.CodegenProperty; |
| 5 | +import io.swagger.codegen.DefaultCodegen; |
| 6 | +import io.swagger.codegen.languages.DartClientCodegen; |
| 7 | +import io.swagger.models.ComposedModel; |
| 8 | +import io.swagger.models.Model; |
| 9 | +import io.swagger.models.ModelImpl; |
| 10 | +import io.swagger.models.RefModel; |
| 11 | +import io.swagger.models.properties.Property; |
| 12 | +import io.swagger.models.properties.StringProperty; |
| 13 | +import org.testng.Assert; |
| 14 | +import org.testng.annotations.Test; |
| 15 | + |
| 16 | +import java.util.ArrayList; |
| 17 | +import java.util.Arrays; |
| 18 | +import java.util.HashMap; |
| 19 | +import java.util.Map; |
| 20 | + |
| 21 | +@SuppressWarnings("static-method") |
| 22 | +public class DartModelEnumTest { |
| 23 | + |
| 24 | + @Test(description = "convert a dart model with an enum") |
| 25 | + public void converterTest() { |
| 26 | + final StringProperty enumProperty = new StringProperty(); |
| 27 | + enumProperty.setEnum(Arrays.asList("VALUE1", "VALUE2", "VALUE3")); |
| 28 | + final ModelImpl model = new ModelImpl().property("name", enumProperty); |
| 29 | + |
| 30 | + final DefaultCodegen codegen = new DartClientCodegen(); |
| 31 | + final CodegenModel cm = codegen.fromModel("sample", model); |
| 32 | + |
| 33 | + Assert.assertEquals(cm.vars.size(), 1); |
| 34 | + |
| 35 | + final CodegenProperty enumVar = cm.vars.get(0); |
| 36 | + Assert.assertEquals(enumVar.baseName, "name"); |
| 37 | + Assert.assertEquals(enumVar.datatype, "String"); |
| 38 | + Assert.assertEquals(enumVar.datatypeWithEnum, "NameEnum"); |
| 39 | + Assert.assertEquals(enumVar.name, "name"); |
| 40 | + Assert.assertEquals(enumVar.defaultValue, "null"); |
| 41 | + Assert.assertEquals(enumVar.baseType, "String"); |
| 42 | + Assert.assertTrue(enumVar.isEnum); |
| 43 | + } |
| 44 | + |
| 45 | + @Test(description = "not override identical parent enums") |
| 46 | + public void overrideEnumTest() { |
| 47 | + final StringProperty identicalEnumProperty = new StringProperty(); |
| 48 | + identicalEnumProperty.setEnum(Arrays.asList("VALUE1", "VALUE2", "VALUE3")); |
| 49 | + |
| 50 | + final StringProperty subEnumProperty = new StringProperty(); |
| 51 | + subEnumProperty.setEnum(Arrays.asList("SUB1", "SUB2", "SUB3")); |
| 52 | + |
| 53 | + // Add one enum property to the parent |
| 54 | + final Map<String, Property> parentProperties = new HashMap<String, Property>(); |
| 55 | + parentProperties.put("sharedThing", identicalEnumProperty); |
| 56 | + |
| 57 | + // Add TWO enums to the subType model; one of which is identical to the one in parent class |
| 58 | + final Map<String, Property> subProperties = new HashMap<String, Property>(); |
| 59 | + subProperties.put("sharedThing", identicalEnumProperty); |
| 60 | + subProperties.put("unsharedThing", identicalEnumProperty); |
| 61 | + |
| 62 | + final ModelImpl parentModel = new ModelImpl(); |
| 63 | + parentModel.setProperties(parentProperties); |
| 64 | + parentModel.name("parentModel"); |
| 65 | + |
| 66 | + final ModelImpl subModel = new ModelImpl(); |
| 67 | + subModel.setProperties(subProperties); |
| 68 | + subModel.name("subModel"); |
| 69 | + |
| 70 | + final ComposedModel model = new ComposedModel() |
| 71 | + .parent(new RefModel(parentModel.getName())) |
| 72 | + .child(subModel) |
| 73 | + .interfaces(new ArrayList<RefModel>()); |
| 74 | + |
| 75 | + final DefaultCodegen codegen = new DartClientCodegen(); |
| 76 | + final Map<String, Model> allModels = new HashMap<String, Model>(); |
| 77 | + allModels.put(parentModel.getName(), parentModel); |
| 78 | + allModels.put(subModel.getName(), subModel); |
| 79 | + |
| 80 | + final CodegenModel cm = codegen.fromModel("sample", model, allModels); |
| 81 | + |
| 82 | + Assert.assertEquals(cm.name, "sample"); |
| 83 | + Assert.assertEquals(cm.classname, "Sample"); |
| 84 | + Assert.assertEquals(cm.parent, "ParentModel"); |
| 85 | + Assert.assertTrue(cm.imports.contains("ParentModel")); |
| 86 | + |
| 87 | + Assert.assertEquals(cm.vars.size(), 2); |
| 88 | + System.out.println(cm.vars); |
| 89 | + CodegenProperty enumVar = cm.vars.get(0); |
| 90 | + Assert.assertEquals(enumVar.baseName, "sharedThing"); |
| 91 | + Assert.assertEquals(enumVar.datatype, "String"); |
| 92 | + Assert.assertEquals(enumVar.datatypeWithEnum, "SharedThingEnum"); |
| 93 | + Assert.assertTrue(enumVar.isEnum); |
| 94 | + enumVar = cm.vars.get(1); |
| 95 | + Assert.assertEquals(enumVar.baseName, "unsharedThing"); |
| 96 | + Assert.assertEquals(enumVar.datatype, "String"); |
| 97 | + Assert.assertEquals(enumVar.datatypeWithEnum, "UnsharedThingEnum"); |
| 98 | + Assert.assertTrue(enumVar.isEnum); |
| 99 | + } |
| 100 | +} |
0 commit comments