Skip to content

Commit 3992702

Browse files
committed
Revert "Moving kotlin support code to swagger-codegen-generators"
This reverts commit ee834db. Revert test removal
1 parent a90dad1 commit 3992702

File tree

3 files changed

+291
-0
lines changed

3 files changed

+291
-0
lines changed
Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
package io.swagger.codegen.kotlin;
2+
3+
import io.swagger.codegen.CodegenConstants;
4+
import io.swagger.codegen.CodegenModel;
5+
import io.swagger.codegen.CodegenProperty;
6+
import io.swagger.codegen.DefaultCodegen;
7+
import io.swagger.codegen.languages.KotlinClientCodegen;
8+
import io.swagger.v3.oas.models.media.ArraySchema;
9+
import io.swagger.v3.oas.models.media.DateTimeSchema;
10+
import io.swagger.v3.oas.models.media.IntegerSchema;
11+
import io.swagger.v3.oas.models.media.MapSchema;
12+
import io.swagger.v3.oas.models.media.Schema;
13+
import io.swagger.v3.oas.models.media.StringSchema;
14+
import io.swagger.v3.parser.util.SchemaTypeUtil;
15+
import org.testng.Assert;
16+
import org.testng.annotations.DataProvider;
17+
import org.testng.annotations.Test;
18+
19+
import static io.swagger.codegen.languages.helpers.ExtensionHelper.getBooleanValue;
20+
21+
@SuppressWarnings("static-method")
22+
public class KotlinClientCodegenModelTest {
23+
24+
private Schema getArrayTestModel() {
25+
return new Schema()
26+
.type("object")
27+
.description("a sample model")
28+
.addProperties("id", new IntegerSchema().format(SchemaTypeUtil.INTEGER64_FORMAT))
29+
.addProperties("examples", new ArraySchema().items(new StringSchema()))
30+
.addRequiredItem("id");
31+
}
32+
33+
private Schema getSimpleModel() {
34+
return new Schema()
35+
.type("object")
36+
.description("a sample model")
37+
.addProperties("id", new IntegerSchema().format(SchemaTypeUtil.INTEGER64_FORMAT))
38+
.addProperties("name", new StringSchema())
39+
.addProperties("createdAt", new DateTimeSchema())
40+
.addRequiredItem("id")
41+
.addRequiredItem("name");
42+
}
43+
44+
private Schema getMapModel() {
45+
return new Schema()
46+
.type("object")
47+
.description("a sample model")
48+
.addProperties("mapping", new MapSchema()
49+
.additionalProperties(new StringSchema()))
50+
.addRequiredItem("id");
51+
}
52+
53+
private Schema getComplexModel() {
54+
return new Schema()
55+
.type("object")
56+
.description("a sample model")
57+
.addProperties("child", new Schema().$ref("#/components/schemas/Child"));
58+
}
59+
60+
@Test(enabled = false,description = "convert a simple model")
61+
public void simpleModelTest() {
62+
final Schema model = getSimpleModel();
63+
final DefaultCodegen codegen = new KotlinClientCodegen();
64+
65+
final CodegenModel cm = codegen.fromModel("sample", model);
66+
67+
Assert.assertEquals(cm.name, "sample");
68+
Assert.assertEquals(cm.classname, "Sample");
69+
Assert.assertEquals(cm.description, "a sample model");
70+
Assert.assertEquals(cm.vars.size(), 3);
71+
72+
final CodegenProperty property1 = cm.vars.get(0);
73+
Assert.assertEquals(property1.baseName, "id");
74+
Assert.assertEquals(property1.datatype, "kotlin.Long");
75+
Assert.assertEquals(property1.name, "id");
76+
Assert.assertEquals(property1.defaultValue, "null");
77+
Assert.assertEquals(property1.baseType, "kotlin.Long");
78+
Assert.assertTrue(getBooleanValue(property1, CodegenConstants.HAS_MORE_EXT_NAME));
79+
Assert.assertTrue(property1.required);
80+
Assert.assertTrue(getBooleanValue(property1, CodegenConstants.IS_PRIMITIVE_TYPE_EXT_NAME));
81+
Assert.assertTrue(getBooleanValue(property1, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
82+
83+
final CodegenProperty property2 = cm.vars.get(1);
84+
Assert.assertEquals(property2.baseName, "name");
85+
Assert.assertEquals(property2.datatype, "kotlin.String");
86+
Assert.assertEquals(property2.name, "name");
87+
Assert.assertEquals(property2.defaultValue, "null");
88+
Assert.assertEquals(property2.baseType, "kotlin.String");
89+
Assert.assertTrue(getBooleanValue(property2, CodegenConstants.HAS_MORE_EXT_NAME));
90+
Assert.assertTrue(property2.required);
91+
Assert.assertTrue(getBooleanValue(property2, CodegenConstants.IS_PRIMITIVE_TYPE_EXT_NAME));
92+
Assert.assertTrue(getBooleanValue(property2, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
93+
94+
final CodegenProperty property3 = cm.vars.get(2);
95+
Assert.assertEquals(property3.baseName, "createdAt");
96+
Assert.assertEquals(property3.datatype, "java.time.LocalDateTime");
97+
Assert.assertEquals(property3.name, "createdAt");
98+
Assert.assertEquals(property3.defaultValue, "null");
99+
Assert.assertEquals(property3.baseType, "java.time.LocalDateTime");
100+
Assert.assertFalse(getBooleanValue(property3, CodegenConstants.HAS_MORE_EXT_NAME));
101+
Assert.assertFalse(property3.required);
102+
Assert.assertTrue(getBooleanValue(property3, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
103+
}
104+
105+
@Test(enabled = false, description = "convert a model with array property to default kotlin.Array")
106+
public void arrayPropertyTest() {
107+
final Schema model = getArrayTestModel();
108+
109+
final DefaultCodegen codegen = new KotlinClientCodegen();
110+
final CodegenModel generated = codegen.fromModel("sample", model);
111+
112+
Assert.assertEquals(generated.name, "sample");
113+
Assert.assertEquals(generated.classname, "Sample");
114+
Assert.assertEquals(generated.description, "a sample model");
115+
Assert.assertEquals(generated.vars.size(), 2);
116+
117+
final CodegenProperty property = generated.vars.get(1);
118+
Assert.assertEquals(property.baseName, "examples");
119+
Assert.assertEquals(property.getter, "getExamples");
120+
Assert.assertEquals(property.setter, "setExamples");
121+
Assert.assertEquals(property.datatype, "kotlin.Array<kotlin.String>");
122+
Assert.assertEquals(property.name, "examples");
123+
Assert.assertEquals(property.defaultValue, "null");
124+
Assert.assertEquals(property.baseType, "kotlin.Array");
125+
Assert.assertEquals(property.containerType, "array");
126+
Assert.assertFalse(property.required);
127+
Assert.assertTrue(getBooleanValue(property, CodegenConstants.IS_CONTAINER_EXT_NAME));
128+
}
129+
@Test(enabled = false, description = "convert a model with a map property")
130+
public void mapPropertyTest() {
131+
final Schema model = getMapModel();
132+
final DefaultCodegen codegen = new KotlinClientCodegen();
133+
final CodegenModel cm = codegen.fromModel("sample", model);
134+
135+
Assert.assertEquals(cm.name, "sample");
136+
Assert.assertEquals(cm.classname, "Sample");
137+
Assert.assertEquals(cm.description, "a sample model");
138+
Assert.assertEquals(cm.vars.size(), 1);
139+
140+
final CodegenProperty property1 = cm.vars.get(0);
141+
Assert.assertEquals(property1.baseName, "mapping");
142+
Assert.assertEquals(property1.datatype, "kotlin.collections.Map<kotlin.String, kotlin.String>");
143+
Assert.assertEquals(property1.name, "mapping");
144+
Assert.assertEquals(property1.baseType, "kotlin.collections.Map");
145+
Assert.assertEquals(property1.containerType, "map");
146+
Assert.assertFalse(property1.required);
147+
Assert.assertTrue(getBooleanValue(property1, CodegenConstants.IS_CONTAINER_EXT_NAME));
148+
Assert.assertTrue(getBooleanValue(property1, CodegenConstants.IS_PRIMITIVE_TYPE_EXT_NAME));
149+
}
150+
151+
@Test(enabled = false, description = "convert a model with complex property")
152+
public void complexPropertyTest() {
153+
final Schema model = getComplexModel();
154+
final DefaultCodegen codegen = new KotlinClientCodegen();
155+
final CodegenModel cm = codegen.fromModel("sample", model);
156+
157+
Assert.assertEquals(cm.name, "sample");
158+
Assert.assertEquals(cm.classname, "Sample");
159+
Assert.assertEquals(cm.description, "a sample model");
160+
Assert.assertEquals(cm.vars.size(), 1);
161+
162+
final CodegenProperty property1 = cm.vars.get(0);
163+
Assert.assertEquals(property1.baseName, "child");
164+
Assert.assertEquals(property1.datatype, "Child");
165+
Assert.assertEquals(property1.name, "child");
166+
Assert.assertEquals(property1.baseType, "Child");
167+
Assert.assertFalse(property1.required);
168+
Assert.assertTrue(getBooleanValue(property1, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
169+
}
170+
171+
@DataProvider(name = "modelNames")
172+
public static Object[][] modelNames(){
173+
return new Object[][] {
174+
{ "TestNs.TestClass" , new ModelNameTest("TestNs.TestClass", "TestNsTestClass") },
175+
{ "$", new ModelNameTest("$", "Dollar") },
176+
{ "for", new ModelNameTest("`for`","`for`")},
177+
{ "One<Two", new ModelNameTest("One<Two", "OneLess_ThanTwo")},
178+
{ "this is a test", new ModelNameTest("this is a test", "This_is_a_test")}
179+
};
180+
}
181+
182+
@Test(enabled = false, dataProvider = "modelNames", description = "sanitize model names")
183+
public void sanitizeModelNames(final String name, final ModelNameTest testCase) {
184+
final Schema schema = getComplexModel();
185+
final DefaultCodegen codegen = new KotlinClientCodegen();
186+
final CodegenModel cm = codegen.fromModel(name, schema);
187+
188+
Assert.assertEquals(cm.name, testCase.expectedName);
189+
Assert.assertEquals(cm.classname, testCase.expectedClassName);
190+
}
191+
192+
private static class ModelNameTest {
193+
private String expectedName;
194+
private String expectedClassName;
195+
196+
private ModelNameTest(String nameAndClass) {
197+
this.expectedName = nameAndClass;
198+
this.expectedClassName = nameAndClass;
199+
}
200+
201+
private ModelNameTest(String expectedName, String expectedClassName) {
202+
this.expectedName = expectedName;
203+
this.expectedClassName = expectedClassName;
204+
}
205+
}
206+
}
207+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package io.swagger.codegen.kotlin;
2+
3+
import io.swagger.codegen.AbstractOptionsTest;
4+
import io.swagger.codegen.CodegenConfig;
5+
import io.swagger.codegen.languages.KotlinClientCodegen;
6+
import io.swagger.codegen.options.KotlinClientCodegenOptionsProvider;
7+
8+
import mockit.Expectations;
9+
import mockit.Tested;
10+
11+
public class KotlinClientCodegenOptionsTest extends AbstractOptionsTest {
12+
13+
@Tested
14+
private KotlinClientCodegen codegen;
15+
16+
public KotlinClientCodegenOptionsTest() {
17+
super(new KotlinClientCodegenOptionsProvider());
18+
}
19+
20+
@Override
21+
protected CodegenConfig getCodegenConfig() {
22+
return codegen;
23+
}
24+
25+
@SuppressWarnings("unused")
26+
@Override
27+
protected void setExpectations() {
28+
new Expectations(codegen) {{
29+
codegen.setPackageName(KotlinClientCodegenOptionsProvider.PACKAGE_NAME_VALUE);
30+
times = 1;
31+
codegen.setArtifactVersion(KotlinClientCodegenOptionsProvider.ARTIFACT_VERSION_VALUE);
32+
times = 1;
33+
codegen.setArtifactId(KotlinClientCodegenOptionsProvider.ARTIFACT_ID);
34+
times = 1;
35+
codegen.setGroupId(KotlinClientCodegenOptionsProvider.GROUP_ID);
36+
times = 1;
37+
codegen.setSourceFolder(KotlinClientCodegenOptionsProvider.SOURCE_FOLDER);
38+
times = 1;
39+
codegen.setEnumPropertyNaming(KotlinClientCodegenOptionsProvider.ENUM_PROPERTY_NAMING);
40+
times = 1;
41+
}};
42+
}
43+
}
44+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package io.swagger.codegen.options;
2+
3+
import io.swagger.codegen.CodegenConstants;
4+
5+
import com.google.common.collect.ImmutableMap;
6+
7+
import java.util.Map;
8+
9+
public class KotlinClientCodegenOptionsProvider implements OptionsProvider {
10+
public static final String PACKAGE_NAME_VALUE = "io.swagger.tests.kotlin";
11+
public static final String ARTIFACT_VERSION_VALUE = "0.0.1-SNAPSHOT";
12+
public static final String ARTIFACT_ID = "swagger-kotlin-test";
13+
public static final String GROUP_ID = "io.swagger.tests";
14+
public static final String SOURCE_FOLDER = "./generated/kotlin";
15+
public static final String ENUM_PROPERTY_NAMING = "camelCase";
16+
17+
@Override
18+
public String getLanguage() {
19+
return "kotlin";
20+
}
21+
22+
@Override
23+
public Map<String, String> createOptions() {
24+
ImmutableMap.Builder<String, String> builder = new ImmutableMap.Builder<String, String>();
25+
return builder
26+
.put(CodegenConstants.PACKAGE_NAME, PACKAGE_NAME_VALUE)
27+
.put(CodegenConstants.ARTIFACT_VERSION, ARTIFACT_VERSION_VALUE)
28+
.put(CodegenConstants.ARTIFACT_ID, ARTIFACT_ID)
29+
.put(CodegenConstants.GROUP_ID, GROUP_ID)
30+
.put(CodegenConstants.SOURCE_FOLDER, SOURCE_FOLDER)
31+
.put(CodegenConstants.ENUM_PROPERTY_NAMING, ENUM_PROPERTY_NAMING)
32+
.build();
33+
}
34+
35+
@Override
36+
public boolean isServer() {
37+
return false;
38+
}
39+
}
40+

0 commit comments

Comments
 (0)