Fix tests for parsing of additional type annotations & refactor test code (#18751)

* Fix tests for parsing of additional type annotations

These were comparing the same things with each other and this could
not fail. Now using (as probably intended by the author) the before
unused ArrayList for assertion of the expectation.

* Remove Exception from signature that is never thrown

* Simplify assertions using AssertJ

* Replace stub implementation with abstract Mockito mock

* Cache flat parsed openapi results for faster test execution

Simply caching any calls to TestUtils.parseFlattenSpec that occur
at least twice.

* Fix some "Raw use of parameterized class 'Schema'" warnings
This commit is contained in:
Philzen 2024-05-26 04:53:23 +02:00 committed by GitHub
parent 746961d07a
commit 22f18fad91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 185 additions and 325 deletions

View File

@ -960,7 +960,7 @@ public class ModelUtils {
* @param schema potentially containing a '$ref' * @param schema potentially containing a '$ref'
* @return schema without '$ref' * @return schema without '$ref'
*/ */
public static Schema getReferencedSchema(OpenAPI openAPI, Schema schema) { public static Schema<?> getReferencedSchema(OpenAPI openAPI, Schema schema) {
if (schema == null) { if (schema == null) {
return null; return null;
} }

View File

@ -17,11 +17,13 @@
package org.openapitools.codegen.java; package org.openapitools.codegen.java;
import org.mockito.Answers;
import org.mockito.Mockito;
import org.openapitools.codegen.CodegenParameter; import org.openapitools.codegen.CodegenParameter;
import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.CodegenProperty;
import org.openapitools.codegen.CodegenType;
import org.openapitools.codegen.languages.AbstractJavaCodegen; import org.openapitools.codegen.languages.AbstractJavaCodegen;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.util.Arrays; import java.util.Arrays;
@ -29,7 +31,17 @@ import java.util.Collections;
public class AbstractJavaCodegenExampleValuesTest { public class AbstractJavaCodegenExampleValuesTest {
private final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen(); private AbstractJavaCodegen codegen;
/**
* In TEST-NG, test class (and its fields) is only constructed once (vs. for every test in Jupiter),
* using @BeforeMethod to have a fresh codegen mock for each test
*/
@BeforeMethod void mockAbstractCodegen() {
codegen = Mockito.mock(
AbstractJavaCodegen.class, Mockito.withSettings().defaultAnswer(Answers.CALLS_REAL_METHODS).useConstructor()
);
}
@Test @Test
void referencedEnumTakeFirstName() { void referencedEnumTakeFirstName() {
@ -37,7 +49,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.allowableValues = Collections.singletonMap("values", Arrays.asList("first", "second")); p.allowableValues = Collections.singletonMap("values", Arrays.asList("first", "second"));
p.dataType = "WrappedEnum"; p.dataType = "WrappedEnum";
fakeJavaCodegen.setParameterExampleValue(p); codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "WrappedEnum.fromValue(\"first\")"); Assert.assertEquals(p.example, "WrappedEnum.fromValue(\"first\")");
} }
@ -48,7 +60,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.isEnum = true; p.isEnum = true;
p.dataType = "String"; p.dataType = "String";
fakeJavaCodegen.setParameterExampleValue(p); codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "\"first\""); Assert.assertEquals(p.example, "\"first\"");
} }
@ -61,7 +73,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.dataType = "List<String>"; p.dataType = "List<String>";
p.items = new CodegenProperty(); p.items = new CodegenProperty();
fakeJavaCodegen.setParameterExampleValue(p); codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "Arrays.asList()"); Assert.assertEquals(p.example, "Arrays.asList()");
} }
@ -71,7 +83,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.isDate = true; p.isDate = true;
p.dataType = "LocalDate"; p.dataType = "LocalDate";
fakeJavaCodegen.setParameterExampleValue(p); codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "LocalDate.now()"); Assert.assertEquals(p.example, "LocalDate.now()");
} }
@ -82,7 +94,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.dataType = "LocalDate"; p.dataType = "LocalDate";
p.example = "2017-03-30"; p.example = "2017-03-30";
fakeJavaCodegen.setParameterExampleValue(p); codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "LocalDate.parse(\"2017-03-30\")"); Assert.assertEquals(p.example, "LocalDate.parse(\"2017-03-30\")");
} }
@ -92,7 +104,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.isDateTime = true; p.isDateTime = true;
p.dataType = "OffsetDateTime"; p.dataType = "OffsetDateTime";
fakeJavaCodegen.setParameterExampleValue(p); codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "OffsetDateTime.now()"); Assert.assertEquals(p.example, "OffsetDateTime.now()");
} }
@ -103,7 +115,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.dataType = "OffsetDateTime"; p.dataType = "OffsetDateTime";
p.example = "2007-12-03T10:15:30+01:00"; p.example = "2007-12-03T10:15:30+01:00";
fakeJavaCodegen.setParameterExampleValue(p); codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "OffsetDateTime.parse(\"2007-12-03T10:15:30+01:00\")"); Assert.assertEquals(p.example, "OffsetDateTime.parse(\"2007-12-03T10:15:30+01:00\")");
} }
@ -113,7 +125,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.isUuid = true; p.isUuid = true;
p.dataType = "UUID"; p.dataType = "UUID";
fakeJavaCodegen.setParameterExampleValue(p); codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "UUID.randomUUID()"); Assert.assertEquals(p.example, "UUID.randomUUID()");
} }
@ -124,46 +136,7 @@ public class AbstractJavaCodegenExampleValuesTest {
p.dataType = "UUID"; p.dataType = "UUID";
p.example = "13b48713-b931-45ea-bd60-b07491245960"; p.example = "13b48713-b931-45ea-bd60-b07491245960";
fakeJavaCodegen.setParameterExampleValue(p); codegen.setParameterExampleValue(p);
Assert.assertEquals(p.example, "UUID.fromString(\"13b48713-b931-45ea-bd60-b07491245960\")"); Assert.assertEquals(p.example, "UUID.fromString(\"13b48713-b931-45ea-bd60-b07491245960\")");
} }
private static class P_AbstractJavaCodegen extends AbstractJavaCodegen {
@Override
public CodegenType getTag() {
return null;
}
@Override
public String getName() {
return null;
}
@Override
public String getHelp() {
return null;
}
/**
* Gets artifact version.
* Only for testing purposes.
*
* @return version
*/
public String getArtifactVersion() {
return this.artifactVersion;
}
@Test
void customExampleForEnumValue() {
final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen();
final CodegenParameter p = new CodegenParameter();
p.allowableValues = Collections.singletonMap("values", Arrays.asList("first", "second"));
p.dataType = "WrappedEnum";
p.example = "CustomEnumValue";
fakeJavaCodegen.setParameterExampleValue(p);
// Custom example value should not be modified
Assert.assertEquals(p.example, "CustomEnumValue");
}
}
} }

View File

@ -31,65 +31,86 @@ import java.time.ZonedDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.mockito.Answers;
import org.mockito.Mockito;
import org.openapitools.codegen.*; import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.AbstractJavaCodegen; import org.openapitools.codegen.languages.AbstractJavaCodegen;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.io.File; import java.io.File;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
import static org.assertj.core.api.Assertions.assertThat;
public class AbstractJavaCodegenTest { public class AbstractJavaCodegenTest {
private final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen(); static final Map<String, OpenAPI> FLATTENED_SPEC = Map.of(
"3_0/petstore", TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"),
"3_0/mapSchemas", TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml"),
"3_0/spring/date-time-parameter-types-for-testing", TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml")
);
private AbstractJavaCodegen codegen;
/**
* In TEST-NG, test class (and its fields) is only constructed once (vs. for every test in Jupiter),
* using @BeforeMethod to have a fresh codegen mock for each test
*/
@BeforeMethod void mockAbstractCodegen() {
codegen = Mockito.mock(
AbstractJavaCodegen.class, Mockito.withSettings().defaultAnswer(Answers.CALLS_REAL_METHODS).useConstructor()
);
}
@Test @Test
public void toEnumVarNameShouldNotShortenUnderScore() throws Exception { public void toEnumVarNameShouldNotShortenUnderScore() {
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_", "String"), "UNDERSCORE"); Assert.assertEquals(codegen.toEnumVarName("_", "String"), "UNDERSCORE");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("__", "String"), "__"); Assert.assertEquals(codegen.toEnumVarName("__", "String"), "__");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_,.", "String"), "__"); Assert.assertEquals(codegen.toEnumVarName("_,.", "String"), "__");
} }
/** /**
* As of Java 9, '_' is a keyword, and may not be used as an identifier. * As of Java 9, '_' is a keyword, and may not be used as an identifier.
*/ */
@Test @Test
public void toEnumVarNameShouldNotResultInSingleUnderscore() throws Exception { public void toEnumVarNameShouldNotResultInSingleUnderscore() {
Assert.assertEquals(fakeJavaCodegen.toEnumVarName(" ", "String"), "SPACE"); Assert.assertEquals(codegen.toEnumVarName(" ", "String"), "SPACE");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("==", "String"), "u"); Assert.assertEquals(codegen.toEnumVarName("==", "String"), "u");
} }
@Test @Test
public void toEnumVarNameAddUnderscoresIfValueIsPascalCase() { public void toEnumVarNameAddUnderscoresIfValueIsPascalCase() {
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("OnlyCamelCase", "String"), "ONLY_CAMEL_CASE"); Assert.assertEquals(codegen.toEnumVarName("OnlyCamelCase", "String"), "ONLY_CAMEL_CASE");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("WithNumber1", "String"), "WITH_NUMBER1"); Assert.assertEquals(codegen.toEnumVarName("WithNumber1", "String"), "WITH_NUMBER1");
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_LeadingUnderscore", "String"), "_LEADING_UNDERSCORE"); Assert.assertEquals(codegen.toEnumVarName("_LeadingUnderscore", "String"), "_LEADING_UNDERSCORE");
} }
@Test @Test
public void toVarNameShouldAvoidOverloadingGetClassMethod() throws Exception { public void toVarNameShouldAvoidOverloadingGetClassMethod() {
Assert.assertEquals(fakeJavaCodegen.toVarName("class"), "propertyClass"); Assert.assertEquals(codegen.toVarName("class"), "propertyClass");
Assert.assertEquals(fakeJavaCodegen.toVarName("_class"), "propertyClass"); Assert.assertEquals(codegen.toVarName("_class"), "propertyClass");
Assert.assertEquals(fakeJavaCodegen.toVarName("__class"), "propertyClass"); Assert.assertEquals(codegen.toVarName("__class"), "propertyClass");
} }
@Test @Test
public void toModelNameShouldNotUseProvidedMapping() throws Exception { public void toModelNameShouldNotUseProvidedMapping() {
fakeJavaCodegen.importMapping().put("json_myclass", "com.test.MyClass"); codegen.importMapping().put("json_myclass", "com.test.MyClass");
Assert.assertEquals(fakeJavaCodegen.toModelName("json_myclass"), "JsonMyclass"); Assert.assertEquals(codegen.toModelName("json_myclass"), "JsonMyclass");
} }
@Test @Test
public void toModelNameUsesPascalCase() throws Exception { public void toModelNameUsesPascalCase() {
Assert.assertEquals(fakeJavaCodegen.toModelName("json_anotherclass"), "JsonAnotherclass"); Assert.assertEquals(codegen.toModelName("json_anotherclass"), "JsonAnotherclass");
} }
@Test @Test
public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() throws Exception { public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/petstore");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.preprocessOpenAPI(openAPI); codegen.preprocessOpenAPI(openAPI);
Assert.assertEquals(codegen.getArtifactVersion(), openAPI.getInfo().getVersion()); Assert.assertEquals(codegen.getArtifactVersion(), openAPI.getInfo().getVersion());
@ -100,10 +121,9 @@ public class AbstractJavaCodegenTest {
} }
@Test @Test
public void testPreprocessOpenAPINumVersion() throws Exception { public void testPreprocessOpenAPINumVersion() {
final OpenAPI openAPIOtherNumVersion = TestUtils.parseFlattenSpec("src/test/resources/2_0/duplicateOperationIds.yaml"); final OpenAPI openAPIOtherNumVersion = TestUtils.parseFlattenSpec("src/test/resources/2_0/duplicateOperationIds.yaml");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.preprocessOpenAPI(openAPIOtherNumVersion); codegen.preprocessOpenAPI(openAPIOtherNumVersion);
Assert.assertEquals(codegen.getArtifactVersion(), openAPIOtherNumVersion.getInfo().getVersion()); Assert.assertEquals(codegen.getArtifactVersion(), openAPIOtherNumVersion.getInfo().getVersion());
@ -111,52 +131,54 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void convertVarName() { public void convertVarName() {
Assert.assertEquals(fakeJavaCodegen.toVarName("name"), "name"); Assert.assertEquals(codegen.toVarName("name"), "name");
Assert.assertEquals(fakeJavaCodegen.toVarName("$name"), "$name"); Assert.assertEquals(codegen.toVarName("$name"), "$name");
Assert.assertEquals(fakeJavaCodegen.toVarName("nam$$e"), "nam$$e"); Assert.assertEquals(codegen.toVarName("nam$$e"), "nam$$e");
Assert.assertEquals(fakeJavaCodegen.toVarName("user-name"), "userName"); Assert.assertEquals(codegen.toVarName("user-name"), "userName");
Assert.assertEquals(fakeJavaCodegen.toVarName("user_name"), "userName"); Assert.assertEquals(codegen.toVarName("user_name"), "userName");
Assert.assertEquals(fakeJavaCodegen.toVarName("user|name"), "userName"); Assert.assertEquals(codegen.toVarName("user|name"), "userName");
Assert.assertEquals(fakeJavaCodegen.toVarName("uSername"), "uSername"); Assert.assertEquals(codegen.toVarName("uSername"), "uSername");
Assert.assertEquals(fakeJavaCodegen.toVarName("USERname"), "usERname"); Assert.assertEquals(codegen.toVarName("USERname"), "usERname");
Assert.assertEquals(fakeJavaCodegen.toVarName("USERNAME"), "USERNAME"); Assert.assertEquals(codegen.toVarName("USERNAME"), "USERNAME");
Assert.assertEquals(fakeJavaCodegen.toVarName("USER123NAME"), "USER123NAME"); Assert.assertEquals(codegen.toVarName("USER123NAME"), "USER123NAME");
Assert.assertEquals(fakeJavaCodegen.toVarName("1"), "_1"); Assert.assertEquals(codegen.toVarName("1"), "_1");
Assert.assertEquals(fakeJavaCodegen.toVarName("1a"), "_1a"); Assert.assertEquals(codegen.toVarName("1a"), "_1a");
Assert.assertEquals(fakeJavaCodegen.toVarName("1A"), "_1A"); Assert.assertEquals(codegen.toVarName("1A"), "_1A");
Assert.assertEquals(fakeJavaCodegen.toVarName("1AAAA"), "_1AAAA"); Assert.assertEquals(codegen.toVarName("1AAAA"), "_1AAAA");
Assert.assertEquals(fakeJavaCodegen.toVarName("1AAaa"), "_1aAaa"); Assert.assertEquals(codegen.toVarName("1AAaa"), "_1aAaa");
AbstractJavaCodegen withCaml = new P_AbstractJavaCodegen();
withCaml.setCamelCaseDollarSign(true);
Assert.assertEquals(withCaml.toVarName("$name"), "$Name");
Assert.assertEquals(withCaml.toVarName("1AAaa"), "_1AAaa");
} }
@Test
public void convertVarNameWithCaml() {
codegen.setCamelCaseDollarSign(true);
Assert.assertEquals(codegen.toVarName("$name"), "$Name");
Assert.assertEquals(codegen.toVarName("1AAaa"), "_1AAaa");
}
@Test @Test
public void convertModelName() { public void convertModelName() {
Assert.assertEquals(fakeJavaCodegen.toModelName("name"), "Name"); Assert.assertEquals(codegen.toModelName("name"), "Name");
Assert.assertEquals(fakeJavaCodegen.toModelName("$name"), "Name"); Assert.assertEquals(codegen.toModelName("$name"), "Name");
Assert.assertEquals(fakeJavaCodegen.toModelName("nam#e"), "Name"); Assert.assertEquals(codegen.toModelName("nam#e"), "Name");
Assert.assertEquals(fakeJavaCodegen.toModelName("$another-fake?"), "AnotherFake"); Assert.assertEquals(codegen.toModelName("$another-fake?"), "AnotherFake");
Assert.assertEquals(fakeJavaCodegen.toModelName("1a"), "Model1a"); Assert.assertEquals(codegen.toModelName("1a"), "Model1a");
Assert.assertEquals(fakeJavaCodegen.toModelName("1A"), "Model1A"); Assert.assertEquals(codegen.toModelName("1A"), "Model1A");
Assert.assertEquals(fakeJavaCodegen.toModelName("AAAb"), "AAAb"); Assert.assertEquals(codegen.toModelName("AAAb"), "AAAb");
Assert.assertEquals(fakeJavaCodegen.toModelName("aBB"), "ABB"); Assert.assertEquals(codegen.toModelName("aBB"), "ABB");
Assert.assertEquals(fakeJavaCodegen.toModelName("AaBBa"), "AaBBa"); Assert.assertEquals(codegen.toModelName("AaBBa"), "AaBBa");
Assert.assertEquals(fakeJavaCodegen.toModelName("A_B"), "AB"); Assert.assertEquals(codegen.toModelName("A_B"), "AB");
Assert.assertEquals(fakeJavaCodegen.toModelName("A-B"), "AB"); Assert.assertEquals(codegen.toModelName("A-B"), "AB");
Assert.assertEquals(fakeJavaCodegen.toModelName("Aa_Bb"), "AaBb"); Assert.assertEquals(codegen.toModelName("Aa_Bb"), "AaBb");
Assert.assertEquals(fakeJavaCodegen.toModelName("Aa-Bb"), "AaBb"); Assert.assertEquals(codegen.toModelName("Aa-Bb"), "AaBb");
Assert.assertEquals(fakeJavaCodegen.toModelName("Aa_bb"), "AaBb"); Assert.assertEquals(codegen.toModelName("Aa_bb"), "AaBb");
Assert.assertEquals(fakeJavaCodegen.toModelName("Aa-bb"), "AaBb"); Assert.assertEquals(codegen.toModelName("Aa-bb"), "AaBb");
} }
@Test @Test
public void testInitialConfigValues() throws Exception { public void testInitialConfigValues() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI(); OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(openAPI); codegen.preprocessOpenAPI(openAPI);
@ -177,7 +199,6 @@ public class AbstractJavaCodegenTest {
public void testSettersForConfigValues() throws Exception { public void testSettersForConfigValues() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI(); OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setHideGenerationTimestamp(true); codegen.setHideGenerationTimestamp(true);
codegen.setModelPackage("xyz.yyyyy.zzzzzzz.model"); codegen.setModelPackage("xyz.yyyyy.zzzzzzz.model");
@ -204,18 +225,15 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void testAdditionalPropertiesPutForConfigValues() throws Exception { public void testAdditionalPropertiesPutForConfigValues() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(CodegenConstants.HIDE_GENERATION_TIMESTAMP, false); codegen.additionalProperties().put(CodegenConstants.HIDE_GENERATION_TIMESTAMP, false);
codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.model.oooooo"); codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.model.oooooo");
codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.yyyyy.api.oooooo"); codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.yyyyy.api.oooooo");
codegen.additionalProperties().put(CodegenConstants.INVOKER_PACKAGE, "xyz.yyyyy.invoker.oooooo"); codegen.additionalProperties().put(CodegenConstants.INVOKER_PACKAGE, "xyz.yyyyy.invoker.oooooo");
codegen.additionalProperties().put(AbstractJavaCodegen.BOOLEAN_GETTER_PREFIX, "getBoolean"); codegen.additionalProperties().put(AbstractJavaCodegen.BOOLEAN_GETTER_PREFIX, "getBoolean");
codegen.additionalProperties().put(CodegenConstants.ARTIFACT_VERSION, "0.8.0-SNAPSHOT"); codegen.additionalProperties().put(CodegenConstants.ARTIFACT_VERSION, "0.8.0-SNAPSHOT");
codegen.processOpts();
codegen.preprocessOpenAPI(openAPI);
codegen.processOpts();
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE);
Assert.assertFalse(codegen.isHideGenerationTimestamp()); Assert.assertFalse(codegen.isHideGenerationTimestamp());
@ -231,119 +249,62 @@ public class AbstractJavaCodegenTest {
} }
@Test @Test
public void testAdditionalModelTypeAnnotationsSemiColon() throws Exception { public void testAdditionalModelTypeAnnotationsSemiColon() {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar"); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar");
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(openAPI); codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>(); assertThat(codegen.getAdditionalModelTypeAnnotations())
additionalModelTypeAnnotations.add("@Foo"); .containsExactlyInAnyOrder("@Bar", "@Foo");
additionalModelTypeAnnotations.add("@Bar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
} }
@Test @Test
public void testAdditionalModelTypeAnnotationsNewLineLinux() throws Exception { public void testAdditionalModelTypeAnnotationsNewLineLinux() {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\n@Bar"); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\n@Bar");
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(openAPI); codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>(); assertThat(codegen.getAdditionalModelTypeAnnotations())
additionalModelTypeAnnotations.add("@Foo"); .containsExactlyInAnyOrder("@Bar", "@Foo");
additionalModelTypeAnnotations.add("@Bar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
} }
@Test @Test
public void testAdditionalModelTypeAnnotationsNewLineWindows() throws Exception { public void testAdditionalModelTypeAnnotationsNewLineWindows() {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\r\n@Bar"); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\r\n@Bar");
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(openAPI); codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>(); assertThat(codegen.getAdditionalModelTypeAnnotations())
additionalModelTypeAnnotations.add("@Foo"); .containsExactlyInAnyOrder("@Bar", "@Foo");
additionalModelTypeAnnotations.add("@Bar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
} }
@Test @Test
public void testAdditionalModelTypeAnnotationsMixed() throws Exception { public void testAdditionalModelTypeAnnotationsMixed() {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, " \t @Foo;\r\n@Bar ;\n @Foobar "); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, " \t @Foo;\r\n@Bar ;\n @Foobar ");
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(openAPI); codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>(); assertThat(codegen.getAdditionalModelTypeAnnotations())
additionalModelTypeAnnotations.add("@Foo"); .containsExactlyInAnyOrder("@Bar", "@Foo", "@Foobar");
additionalModelTypeAnnotations.add("@Bar");
additionalModelTypeAnnotations.add("@Foobar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
} }
@Test @Test
public void testAdditionalModelTypeAnnotationsNoDuplicate() throws Exception { public void testAdditionalModelTypeAnnotationsNoDuplicate() {
OpenAPI openAPI = TestUtils.createOpenAPI();
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar;@Foo"); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar;@Foo");
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(openAPI); codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
final List<String> additionalModelTypeAnnotations = new ArrayList<String>(); assertThat(codegen.getAdditionalModelTypeAnnotations())
additionalModelTypeAnnotations.add("@Foo"); .containsExactlyInAnyOrder("@Bar", "@Foo", "@Foo");
additionalModelTypeAnnotations.add("@Bar");
final List<String> sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
final List<String> sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations());
Collections.sort(sortedCodegenAdditionalModelTypeAnnotations);
Collections.sort(sortedAdditionalModelTypeAnnotations);
Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations);
} }
@Test @Test
public void toEnumValue() { public void toEnumValue() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
Assert.assertEquals(codegen.toEnumValue("1", "Integer"), "1"); Assert.assertEquals(codegen.toEnumValue("1", "Integer"), "1");
Assert.assertEquals(codegen.toEnumValue("42", "Double"), "42"); Assert.assertEquals(codegen.toEnumValue("42", "Double"), "42");
Assert.assertEquals(codegen.toEnumValue("1337", "Long"), "1337l"); Assert.assertEquals(codegen.toEnumValue("1337", "Long"), "1337l");
@ -353,7 +314,6 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void apiFileFolder() { public void apiFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools"); codegen.setOutputDir("/User/open.api.tools");
codegen.setSourceFolder("source.folder"); codegen.setSourceFolder("source.folder");
codegen.setApiPackage("org.openapitools.codegen.api"); codegen.setApiPackage("org.openapitools.codegen.api");
@ -362,7 +322,6 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void apiTestFileFolder() { public void apiTestFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools"); codegen.setOutputDir("/User/open.api.tools");
codegen.setTestFolder("test.folder"); codegen.setTestFolder("test.folder");
codegen.setApiPackage("org.openapitools.codegen.api"); codegen.setApiPackage("org.openapitools.codegen.api");
@ -371,7 +330,6 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void modelTestFileFolder() { public void modelTestFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools"); codegen.setOutputDir("/User/open.api.tools");
codegen.setTestFolder("test.folder"); codegen.setTestFolder("test.folder");
codegen.setModelPackage("org.openapitools.codegen.model"); codegen.setModelPackage("org.openapitools.codegen.model");
@ -380,7 +338,6 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void apiTestFileFolderDirect() { public void apiTestFileFolderDirect() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputTestFolder("/User/open.api.tools"); codegen.setOutputTestFolder("/User/open.api.tools");
codegen.setTestFolder("test.folder"); codegen.setTestFolder("test.folder");
codegen.setApiPackage("org.openapitools.codegen.api"); codegen.setApiPackage("org.openapitools.codegen.api");
@ -389,7 +346,6 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void modelTestFileFolderDirect() { public void modelTestFileFolderDirect() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputTestFolder("/User/open.api.tools"); codegen.setOutputTestFolder("/User/open.api.tools");
codegen.setTestFolder("test.folder"); codegen.setTestFolder("test.folder");
codegen.setModelPackage("org.openapitools.codegen.model"); codegen.setModelPackage("org.openapitools.codegen.model");
@ -398,7 +354,6 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void modelFileFolder() { public void modelFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools"); codegen.setOutputDir("/User/open.api.tools");
codegen.setSourceFolder("source.folder"); codegen.setSourceFolder("source.folder");
codegen.setModelPackage("org.openapitools.codegen.model"); codegen.setModelPackage("org.openapitools.codegen.model");
@ -407,69 +362,57 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void apiDocFileFolder() { public void apiDocFileFolder() {
final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOutputDir("/User/open.api.tools"); codegen.setOutputDir("/User/open.api.tools");
Assert.assertEquals(codegen.apiDocFileFolder(), "/User/open.api.tools/docs/".replace('/', File.separatorChar)); Assert.assertEquals(codegen.apiDocFileFolder(), "/User/open.api.tools/docs/".replace('/', File.separatorChar));
} }
@Test(description = "tests if API version specification is used if no version is provided in additional properties") @Test(description = "tests if API version specification is used if no version is provided in additional properties")
public void openApiVersionTest() { public void openApiVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
OpenAPI api = TestUtils.createOpenAPI();
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(api); codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "1.0.7"); Assert.assertEquals(codegen.getArtifactVersion(), "1.0.7");
} }
@Test(description = "tests if API version specification is used if no version is provided in additional properties with snapshot version") @Test(description = "tests if API version specification is used if no version is provided in additional properties with snapshot version")
public void openApiSnapShotVersionTest() { public void openApiSnapShotVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("snapshotVersion", "true"); codegen.additionalProperties().put("snapshotVersion", "true");
OpenAPI api = TestUtils.createOpenAPI();
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(api); codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "1.0.7-SNAPSHOT"); Assert.assertEquals(codegen.getArtifactVersion(), "1.0.7-SNAPSHOT");
} }
@Test(description = "tests if artifactVersion additional property is used") @Test(description = "tests if artifactVersion additional property is used")
public void additionalPropertyArtifactVersionTest() { public void additionalPropertyArtifactVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("artifactVersion", "1.1.1"); codegen.additionalProperties().put("artifactVersion", "1.1.1");
OpenAPI api = TestUtils.createOpenAPI();
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(api); codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "1.1.1"); Assert.assertEquals(codegen.getArtifactVersion(), "1.1.1");
} }
@Test(description = "tests if artifactVersion additional property is used with snapshot parameter") @Test(description = "tests if artifactVersion additional property is used with snapshot parameter")
public void additionalPropertyArtifactSnapShotVersionTest() { public void additionalPropertyArtifactSnapShotVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("artifactVersion", "1.1.1"); codegen.additionalProperties().put("artifactVersion", "1.1.1");
codegen.additionalProperties().put("snapshotVersion", "true"); codegen.additionalProperties().put("snapshotVersion", "true");
OpenAPI api = TestUtils.createOpenAPI();
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(api); codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "1.1.1-SNAPSHOT"); Assert.assertEquals(codegen.getArtifactVersion(), "1.1.1-SNAPSHOT");
} }
@Test(description = "tests if default version is used when neither OpenAPI version nor artifactVersion additional property has been provided") @Test(description = "tests if default version is used when neither OpenAPI version nor artifactVersion additional property has been provided")
public void defaultVersionTest() { public void defaultVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setArtifactVersion(null); codegen.setArtifactVersion(null);
OpenAPI api = TestUtils.createOpenAPI(); OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion(null); api.getInfo().setVersion(null);
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(api); codegen.preprocessOpenAPI(api);
@ -478,12 +421,11 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if default version with snapshot is used when neither OpenAPI version nor artifactVersion additional property has been provided") @Test(description = "tests if default version with snapshot is used when neither OpenAPI version nor artifactVersion additional property has been provided")
public void snapshotVersionTest() { public void snapshotVersionTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("snapshotVersion", "true"); codegen.additionalProperties().put("snapshotVersion", "true");
OpenAPI api = TestUtils.createOpenAPI(); OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion(null); api.getInfo().setVersion(null);
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(api); codegen.preprocessOpenAPI(api);
@ -492,12 +434,11 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if default version with snapshot is used when OpenAPI version has been provided") @Test(description = "tests if default version with snapshot is used when OpenAPI version has been provided")
public void snapshotVersionOpenAPITest() { public void snapshotVersionOpenAPITest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true");
OpenAPI api = TestUtils.createOpenAPI(); OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion("2.0"); api.getInfo().setVersion("2.0");
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(api); codegen.preprocessOpenAPI(api);
@ -506,12 +447,11 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if setting an artifact version programmatically persists to additional properties, when openapi version is null") @Test(description = "tests if setting an artifact version programmatically persists to additional properties, when openapi version is null")
public void allowsProgrammaticallySettingArtifactVersionWithNullOpenApiVersion() { public void allowsProgrammaticallySettingArtifactVersionWithNullOpenApiVersion() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final String version = "9.8.7-rc1"; final String version = "9.8.7-rc1";
codegen.setArtifactVersion(version); codegen.setArtifactVersion(version);
OpenAPI api = TestUtils.createOpenAPI(); OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion(null); api.getInfo().setVersion(null);
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(api); codegen.preprocessOpenAPI(api);
@ -521,12 +461,11 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if setting an artifact version programmatically persists to additional properties, even when openapi version is specified") @Test(description = "tests if setting an artifact version programmatically persists to additional properties, even when openapi version is specified")
public void allowsProgrammaticallySettingArtifactVersionWithSpecifiedOpenApiVersion() { public void allowsProgrammaticallySettingArtifactVersionWithSpecifiedOpenApiVersion() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final String version = "9.8.7-rc1"; final String version = "9.8.7-rc1";
codegen.setArtifactVersion(version); codegen.setArtifactVersion(version);
OpenAPI api = TestUtils.createOpenAPI(); OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion("1.2.3-SNAPSHOT"); api.getInfo().setVersion("1.2.3-SNAPSHOT");
codegen.processOpts(); codegen.processOpts();
codegen.preprocessOpenAPI(api); codegen.preprocessOpenAPI(api);
@ -536,9 +475,7 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if a null in addition properties artifactVersion results in default version") @Test(description = "tests if a null in addition properties artifactVersion results in default version")
public void usesDefaultVersionWhenAdditionalPropertiesVersionIsNull() { public void usesDefaultVersionWhenAdditionalPropertiesVersionIsNull() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final String version = "1.0.0"; final String version = "1.0.0";
OpenAPI api = TestUtils.createOpenAPI(); OpenAPI api = TestUtils.createOpenAPI();
api.getInfo().setVersion(null); api.getInfo().setVersion(null);
codegen.setArtifactVersion(null); codegen.setArtifactVersion(null);
@ -554,21 +491,18 @@ public class AbstractJavaCodegenTest {
@Test(description = "tests if default version with snapshot is used when setArtifactVersion is used") @Test(description = "tests if default version with snapshot is used when setArtifactVersion is used")
public void snapshotVersionAlreadySnapshotTest() { public void snapshotVersionAlreadySnapshotTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true");
OpenAPI api = TestUtils.createOpenAPI();
codegen.setArtifactVersion("4.1.2-SNAPSHOT"); codegen.setArtifactVersion("4.1.2-SNAPSHOT");
codegen.processOpts();
codegen.preprocessOpenAPI(api);
codegen.processOpts();
codegen.preprocessOpenAPI(TestUtils.createOpenAPI());
Assert.assertEquals(codegen.getArtifactVersion(), "4.1.2-SNAPSHOT"); Assert.assertEquals(codegen.getArtifactVersion(), "4.1.2-SNAPSHOT");
} }
@Test @Test
public void toDefaultValueDateTimeLegacyTest() { public void toDefaultValueDateTimeLegacyTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setDateLibrary("legacy"); codegen.setDateLibrary("legacy");
String defaultValue; String defaultValue;
@ -601,11 +535,9 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void toDefaultValueTest() { public void toDefaultValueTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setDateLibrary("java8"); codegen.setDateLibrary("java8");
Schema<?> schema = new ObjectSchema().addProperty("id", new IntegerSchema().format("int32")).minItems(1);
Schema<?> schema = createObjectSchemaWithMinItems();
String defaultValue = codegen.toDefaultValue(schema); String defaultValue = codegen.toDefaultValue(schema);
Assert.assertEquals(defaultValue, "null"); Assert.assertEquals(defaultValue, "null");
@ -614,7 +546,7 @@ public class AbstractJavaCodegenTest {
codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("NestedArray", nestedArraySchema))); codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("NestedArray", nestedArraySchema)));
// Create an array schema with item type set to the array alias // Create an array schema with item type set to the array alias
schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/NestedArray")); schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/NestedArray"));
ModelUtils.setGenerateAliasAsModel(false); ModelUtils.setGenerateAliasAsModel(false);
defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), schema); defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), schema);
@ -625,7 +557,7 @@ public class AbstractJavaCodegenTest {
Assert.assertEquals(defaultValue, "new ArrayList<>()"); Assert.assertEquals(defaultValue, "new ArrayList<>()");
// Create a map schema with additionalProperties type set to array alias // Create a map schema with additionalProperties type set to array alias
schema = new MapSchema().additionalProperties(new Schema().$ref("#/components/schemas/NestedArray")); schema = new MapSchema().additionalProperties(new Schema<>().$ref("#/components/schemas/NestedArray"));
ModelUtils.setGenerateAliasAsModel(false); ModelUtils.setGenerateAliasAsModel(false);
defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), schema); defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), schema);
@ -641,14 +573,14 @@ public class AbstractJavaCodegenTest {
Date date = Date.from(defaultLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); Date date = Date.from(defaultLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
dateSchema.setDefault(date); dateSchema.setDefault(date);
defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), dateSchema); defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), dateSchema);
Assert.assertEquals(defaultValue, "LocalDate.parse(\"" + defaultLocalDate.toString() + "\")"); Assert.assertEquals(defaultValue, "LocalDate.parse(\"" + defaultLocalDate + "\")");
DateTimeSchema dateTimeSchema = new DateTimeSchema(); DateTimeSchema dateTimeSchema = new DateTimeSchema();
OffsetDateTime defaultDateTime = OffsetDateTime.parse("1984-12-19T03:39:57-08:00"); OffsetDateTime defaultDateTime = OffsetDateTime.parse("1984-12-19T03:39:57-08:00");
ZonedDateTime expectedDateTime = defaultDateTime.atZoneSameInstant(ZoneId.systemDefault()); ZonedDateTime expectedDateTime = defaultDateTime.atZoneSameInstant(ZoneId.systemDefault());
dateTimeSchema.setDefault(defaultDateTime); dateTimeSchema.setDefault(defaultDateTime);
defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), dateTimeSchema); defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), dateTimeSchema);
Assert.assertTrue(defaultValue.startsWith("OffsetDateTime.parse(\"" + expectedDateTime.toString())); Assert.assertTrue(defaultValue.startsWith("OffsetDateTime.parse(\"" + expectedDateTime));
// Test default value for number without format // Test default value for number without format
NumberSchema numberSchema = new NumberSchema(); NumberSchema numberSchema = new NumberSchema();
@ -665,15 +597,14 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void dateDefaultValueIsIsoDate() { public void dateDefaultValueIsIsoDate() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml"); final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/spring/date-time-parameter-types-for-testing");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOpenAPI(openAPI); codegen.setOpenAPI(openAPI);
Set<String> imports = new HashSet<>(); Set<String> imports = new HashSet<>();
CodegenParameter parameter = codegen.fromParameter(openAPI.getPaths().get("/thingy/{date}").getGet().getParameters().get(2), imports); CodegenParameter parameter = codegen.fromParameter(openAPI.getPaths().get("/thingy/{date}").getGet().getParameters().get(2), imports);
Assert.assertEquals(parameter.dataType, "Date"); Assert.assertEquals(parameter.dataType, "Date");
Assert.assertEquals(parameter.isDate, true); Assert.assertTrue(parameter.isDate);
Assert.assertEquals(parameter.defaultValue, "1974-01-01"); Assert.assertEquals(parameter.defaultValue, "1974-01-01");
Assert.assertEquals(imports.size(), 1); Assert.assertEquals(imports.size(), 1);
Assert.assertEquals(imports.iterator().next(), "Date"); Assert.assertEquals(imports.iterator().next(), "Date");
@ -684,15 +615,14 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void dateDefaultValueIsIsoDateTime() { public void dateDefaultValueIsIsoDateTime() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml"); final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/spring/date-time-parameter-types-for-testing");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOpenAPI(openAPI); codegen.setOpenAPI(openAPI);
Set<String> imports = new HashSet<>(); Set<String> imports = new HashSet<>();
CodegenParameter parameter = codegen.fromParameter(openAPI.getPaths().get("/thingy/{date}").getGet().getParameters().get(1), imports); CodegenParameter parameter = codegen.fromParameter(openAPI.getPaths().get("/thingy/{date}").getGet().getParameters().get(1), imports);
Assert.assertEquals(parameter.dataType, "Date"); Assert.assertEquals(parameter.dataType, "Date");
Assert.assertEquals(parameter.isDateTime, true); Assert.assertTrue(parameter.isDateTime);
Assert.assertEquals(parameter.defaultValue, "1973-12-19T03:39:57-08:00"); Assert.assertEquals(parameter.defaultValue, "1973-12-19T03:39:57-08:00");
Assert.assertEquals(imports.size(), 1); Assert.assertEquals(imports.size(), 1);
Assert.assertEquals(imports.iterator().next(), "Date"); Assert.assertEquals(imports.iterator().next(), "Date");
@ -703,19 +633,19 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void getTypeDeclarationGivenSchemaMappingTest() { public void getTypeDeclarationGivenSchemaMappingTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.schemaMapping().put("MyStringType", "com.example.foo"); codegen.schemaMapping().put("MyStringType", "com.example.foo");
codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("MyStringType", new StringSchema()))); codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("MyStringType", new StringSchema())));
Schema<?> schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/MyStringType")); Schema<?> schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/MyStringType"));
String defaultValue = codegen.getTypeDeclaration(schema); String defaultValue = codegen.getTypeDeclaration(schema);
Assert.assertEquals(defaultValue, "List<com.example.foo>"); Assert.assertEquals(defaultValue, "List<com.example.foo>");
} }
@Test @Test
public void getTypeDeclarationTest() { public void getTypeDeclarationTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
Schema<?> schema = createObjectSchemaWithMinItems(); Schema<?> schema = new ObjectSchema().addProperty("id", new IntegerSchema().format("int32")).minItems(1);
String defaultValue = codegen.getTypeDeclaration(schema); String defaultValue = codegen.getTypeDeclaration(schema);
Assert.assertEquals(defaultValue, "Object"); Assert.assertEquals(defaultValue, "Object");
@ -724,7 +654,7 @@ public class AbstractJavaCodegenTest {
codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("NestedArray", nestedArraySchema))); codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("NestedArray", nestedArraySchema)));
// Create an array schema with item type set to the array alias // Create an array schema with item type set to the array alias
schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/NestedArray")); schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/NestedArray"));
ModelUtils.setGenerateAliasAsModel(false); ModelUtils.setGenerateAliasAsModel(false);
defaultValue = codegen.getTypeDeclaration(schema); defaultValue = codegen.getTypeDeclaration(schema);
@ -735,7 +665,7 @@ public class AbstractJavaCodegenTest {
Assert.assertEquals(defaultValue, "List<NestedArray>"); Assert.assertEquals(defaultValue, "List<NestedArray>");
// Create an array schema with item type set to the array alias // Create an array schema with item type set to the array alias
schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/NestedArray")); schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/NestedArray"));
schema.setUniqueItems(true); schema.setUniqueItems(true);
ModelUtils.setGenerateAliasAsModel(false); ModelUtils.setGenerateAliasAsModel(false);
@ -747,7 +677,7 @@ public class AbstractJavaCodegenTest {
Assert.assertEquals(defaultValue, "Set<NestedArray>"); Assert.assertEquals(defaultValue, "Set<NestedArray>");
// Create a map schema with additionalProperties type set to array alias // Create a map schema with additionalProperties type set to array alias
schema = new MapSchema().additionalProperties(new Schema().$ref("#/components/schemas/NestedArray")); schema = new MapSchema().additionalProperties(new Schema<>().$ref("#/components/schemas/NestedArray"));
ModelUtils.setGenerateAliasAsModel(false); ModelUtils.setGenerateAliasAsModel(false);
defaultValue = codegen.getTypeDeclaration(schema); defaultValue = codegen.getTypeDeclaration(schema);
@ -760,66 +690,63 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void processOptsBooleanTrueFromString() { public void processOptsBooleanTrueFromString() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true");
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
} }
@Test @Test
public void processOptsBooleanTrueFromBoolean() { public void processOptsBooleanTrueFromBoolean() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, true); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, true);
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
} }
@Test @Test
public void processOptsBooleanFalseFromString() { public void processOptsBooleanFalseFromString() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "false"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "false");
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
} }
@Test @Test
public void processOptsBooleanFalseFromBoolean() { public void processOptsBooleanFalseFromBoolean() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, false); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, false);
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
} }
@Test @Test
public void processOptsBooleanFalseFromGarbage() { public void processOptsBooleanFalseFromGarbage() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "blibb"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "blibb");
codegen.preprocessOpenAPI(openAPI);
codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
} }
@Test @Test
public void processOptsBooleanFalseFromNumeric() { public void processOptsBooleanFalseFromNumeric() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, 42L); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, 42L);
codegen.preprocessOpenAPI(openAPI); codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore"));
Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION));
} }
@Test @Test
public void nullDefaultValueForModelWithDynamicProperties() { public void nullDefaultValueForModelWithDynamicProperties() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/mapSchemas");
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml");
codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true); codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true);
codegen.setOpenAPI(openAPI); codegen.setOpenAPI(openAPI);
Schema schema = openAPI.getComponents().getSchemas().get("ModelWithAdditionalProperties"); Schema<?> schema = openAPI.getComponents().getSchemas().get("ModelWithAdditionalProperties");
CodegenModel cm = codegen.fromModel("ModelWithAdditionalProperties", schema); CodegenModel cm = codegen.fromModel("ModelWithAdditionalProperties", schema);
Assert.assertEquals(cm.vars.size(), 1, "Expected single declared var"); Assert.assertEquals(cm.vars.size(), 1, "Expected single declared var");
Assert.assertEquals(cm.vars.get(0).name, "id"); Assert.assertEquals(cm.vars.get(0).name, "id");
@ -831,12 +758,11 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void maplikeDefaultValueForModelWithStringToStringMapping() { public void maplikeDefaultValueForModelWithStringToStringMapping() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/mapSchemas");
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml");
codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true); codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true);
codegen.setOpenAPI(openAPI); codegen.setOpenAPI(openAPI);
Schema schema = openAPI.getComponents().getSchemas().get("ModelWithStringToStringMapping"); Schema<?> schema = openAPI.getComponents().getSchemas().get("ModelWithStringToStringMapping");
CodegenModel cm = codegen.fromModel("ModelWithAdditionalProperties", schema); CodegenModel cm = codegen.fromModel("ModelWithAdditionalProperties", schema);
Assert.assertEquals(cm.vars.size(), 0, "Expected no declared vars"); Assert.assertEquals(cm.vars.size(), 0, "Expected no declared vars");
Assert.assertNull(cm.defaultValue, "Expected no defined default value in spec"); Assert.assertNull(cm.defaultValue, "Expected no defined default value in spec");
@ -847,12 +773,11 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void maplikeDefaultValueForModelWithStringToModelMapping() { public void maplikeDefaultValueForModelWithStringToModelMapping() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/mapSchemas");
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml");
codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true); codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true);
codegen.setOpenAPI(openAPI); codegen.setOpenAPI(openAPI);
Schema schema = openAPI.getComponents().getSchemas().get("ModelWithStringToModelMapping"); Schema<?> schema = openAPI.getComponents().getSchemas().get("ModelWithStringToModelMapping");
CodegenModel cm = codegen.fromModel("ModelWithStringToModelMapping", schema); CodegenModel cm = codegen.fromModel("ModelWithStringToModelMapping", schema);
Assert.assertEquals(cm.vars.size(), 0, "Expected no declared vars"); Assert.assertEquals(cm.vars.size(), 0, "Expected no declared vars");
Assert.assertNull(cm.defaultValue, "Expected no defined default value in spec"); Assert.assertNull(cm.defaultValue, "Expected no defined default value in spec");
@ -865,20 +790,19 @@ public class AbstractJavaCodegenTest {
public void srcMainFolderShouldNotBeOperatingSystemSpecificPaths() { public void srcMainFolderShouldNotBeOperatingSystemSpecificPaths() {
// it's not responsibility of the generator to fix OS-specific paths. This is left to template manager. // it's not responsibility of the generator to fix OS-specific paths. This is left to template manager.
// This path must be non-OS-specific for expectations in source outputs (e.g. gradle build files) // This path must be non-OS-specific for expectations in source outputs (e.g. gradle build files)
Assert.assertEquals(fakeJavaCodegen.getSourceFolder(), "src/main/java"); Assert.assertEquals(codegen.getSourceFolder(), "src/main/java");
} }
@Test @Test
public void srcTestFolderShouldNotBeOperatingSystemSpecificPaths() { public void srcTestFolderShouldNotBeOperatingSystemSpecificPaths() {
// it's not responsibility of the generator to fix OS-specific paths. This is left to template manager. // it's not responsibility of the generator to fix OS-specific paths. This is left to template manager.
// This path must be non-OS-specific for expectations in source outputs (e.g. gradle build files) // This path must be non-OS-specific for expectations in source outputs (e.g. gradle build files)
Assert.assertEquals(fakeJavaCodegen.getTestFolder(), "src/test/java"); Assert.assertEquals(codegen.getTestFolder(), "src/test/java");
} }
@Test @Test
public void testOneOfModelImports() throws Exception { public void testOneOfModelImports() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/oneOf_nonPrimitive.yaml"); final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/oneOf_nonPrimitive.yaml");
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOpenAPI(openAPI); codegen.setOpenAPI(openAPI);
codegen.preprocessOpenAPI(openAPI); codegen.preprocessOpenAPI(openAPI);
@ -891,16 +815,15 @@ public class AbstractJavaCodegenTest {
} }
@Test @Test
public void arrayParameterDefaultValueDoesNotNeedBraces() throws Exception { public void arrayParameterDefaultValueDoesNotNeedBraces() {
ParseOptions parseOptions = new ParseOptions(); ParseOptions parseOptions = new ParseOptions();
parseOptions.setResolve(true); parseOptions.setResolve(true);
final OpenAPI openAPI = new OpenAPIParser() final OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/3_0/issue_16223.yaml", null, parseOptions) .readLocation("src/test/resources/3_0/issue_16223.yaml", null, parseOptions)
.getOpenAPI(); .getOpenAPI();
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.setOpenAPI(openAPI); codegen.setOpenAPI(openAPI);
Map<String, Schema> schemas = openAPI.getPaths().get("/test").getGet().getParameters().stream() Map<String, Schema<?>> schemas = openAPI.getPaths().get("/test").getGet().getParameters().stream()
.collect(Collectors.toMap( .collect(Collectors.toMap(
Parameter::getName, Parameter::getName,
p -> ModelUtils.getReferencedSchema(openAPI, p.getSchema()))); p -> ModelUtils.getReferencedSchema(openAPI, p.getSchema())));
@ -912,7 +835,6 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void ignoreBeanValidationAnnotationsTest() { public void ignoreBeanValidationAnnotationsTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("useBeanValidation", true); codegen.additionalProperties().put("useBeanValidation", true);
Schema<?> schema = new Schema<>().type("string").format("uuid").pattern("^[a-z]$").maxLength(36); Schema<?> schema = new Schema<>().type("string").format("uuid").pattern("^[a-z]$").maxLength(36);
@ -938,7 +860,6 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void ignoreBeanValidationAnnotationsContainerTest() { public void ignoreBeanValidationAnnotationsContainerTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("useBeanValidation", true); codegen.additionalProperties().put("useBeanValidation", true);
Schema<?> schema = new ArraySchema().items(new Schema<>().type("string").format("uuid").pattern("^[a-z]$").maxLength(36)); Schema<?> schema = new ArraySchema().items(new Schema<>().type("string").format("uuid").pattern("^[a-z]$").maxLength(36));
@ -964,7 +885,6 @@ public class AbstractJavaCodegenTest {
@Test @Test
public void AnnotationsContainerTest() { public void AnnotationsContainerTest() {
final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen();
codegen.additionalProperties().put("useBeanValidation", true); codegen.additionalProperties().put("useBeanValidation", true);
// 1. string type // 1. string type
@ -1048,37 +968,4 @@ public class AbstractJavaCodegenTest {
defaultValue = codegen.getTypeDeclaration(schema); defaultValue = codegen.getTypeDeclaration(schema);
Assert.assertEquals(defaultValue, "List<@Max(10)Integer>"); Assert.assertEquals(defaultValue, "List<@Max(10)Integer>");
} }
private static Schema<?> createObjectSchemaWithMinItems() {
return new ObjectSchema()
.addProperties("id", new IntegerSchema().format("int32"))
.minItems(1);
}
private static class P_AbstractJavaCodegen extends AbstractJavaCodegen {
@Override
public CodegenType getTag() {
return null;
}
@Override
public String getName() {
return null;
}
@Override
public String getHelp() {
return null;
}
/**
* Gets artifact version.
* Only for testing purposes.
*
* @return version
*/
public String getArtifactVersion() {
return this.artifactVersion;
}
}
} }