diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index 4b5f43e460084d1fa3514341090146c029b84424..5e84b3fec18e09a78d71033fa63a0a6e03763ac6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -464,10 +464,19 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp @Override public String toDefaultValue(Schema p) { if (ModelUtils.isBooleanSchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } return UNDEFINED_VALUE; } else if (ModelUtils.isDateSchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } return UNDEFINED_VALUE; } else if (ModelUtils.isDateTimeSchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } return UNDEFINED_VALUE; } else if (ModelUtils.isNumberSchema(p) || ModelUtils.isIntegerSchema(p)) { if (p.getDefault() != null) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchModelTest.java index 1317a43af639be16ee33bd80b1c89d39c792fdc8..061e18bbaf07dd0a478471559d803c027181e8df 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchModelTest.java @@ -29,8 +29,15 @@ import org.openapitools.codegen.languages.TypeScriptFetchClientCodegen; import org.testng.Assert; import org.testng.annotations.Test; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; import java.util.Arrays; +import java.util.Date; import java.util.HashMap; +import java.util.Locale; /* import static io.swagger.codegen.CodegenConstants.IS_ENUM_EXT_NAME; @@ -49,6 +56,7 @@ public class TypeScriptFetchModelTest { .addProperties("name", new StringSchema()) .addProperties("createdAt", new DateTimeSchema()) .addProperties("birthDate", new DateSchema()) + .addProperties("active", new BooleanSchema()) .addRequiredItem("id") .addRequiredItem("name"); @@ -60,7 +68,7 @@ public class TypeScriptFetchModelTest { Assert.assertEquals(cm.name, "sample"); Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a sample model"); - Assert.assertEquals(cm.vars.size(), 4); + Assert.assertEquals(cm.vars.size(), 5); final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "id"); @@ -98,9 +106,79 @@ public class TypeScriptFetchModelTest { Assert.assertEquals(property4.dataType, "Date"); Assert.assertEquals(property4.name, "birthDate"); Assert.assertEquals(property4.defaultValue, "undefined"); - Assert.assertFalse(property4.hasMore); + Assert.assertTrue(property4.hasMore); Assert.assertFalse(property4.required); Assert.assertFalse(property4.isContainer); + + final CodegenProperty property5 = cm.vars.get(4); + Assert.assertEquals(property5.baseName, "active"); + Assert.assertEquals(property5.complexType, null); + Assert.assertEquals(property5.dataType, "boolean"); + Assert.assertEquals(property5.name, "active"); + Assert.assertEquals(property5.defaultValue, "undefined"); + Assert.assertFalse(property5.hasMore); + Assert.assertFalse(property5.required); + Assert.assertFalse(property5.isContainer); + } + + @Test(description = "convert and check default values for a simple TypeScript Angular model") + public void simpleModelDefaultValuesTest() throws ParseException { + IntegerSchema integerSchema = new IntegerSchema().format(SchemaTypeUtil.INTEGER64_FORMAT); + integerSchema.setDefault(1234); + + StringSchema stringSchema = new StringSchema(); + stringSchema.setDefault("Jack"); + + OffsetDateTime testOffsetDateTime = OffsetDateTime.of(LocalDateTime.of(2020, 1, 1, 12, 0), ZoneOffset.UTC); + DateTimeSchema dateTimeSchema = new DateTimeSchema(); + dateTimeSchema.setDefault(testOffsetDateTime); + + Date testDate = Date.from(testOffsetDateTime.toInstant()); + DateSchema dateSchema = new DateSchema(); + dateSchema.setDefault(testDate); + + BooleanSchema booleanSchema = new BooleanSchema(); + booleanSchema.setDefault(true); + + final Schema model = new Schema() + .description("a sample model") + .addProperties("id", integerSchema) + .addProperties("name", stringSchema) + .addProperties("createdAt", dateTimeSchema) + .addProperties("birthDate", dateSchema) + .addProperties("active", booleanSchema) + .addRequiredItem("id") + .addRequiredItem("name"); + + final DefaultCodegen codegen = new TypeScriptFetchClientCodegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 5); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.defaultValue, "1234"); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "name"); + Assert.assertEquals(property2.defaultValue, "'Jack'"); + + final CodegenProperty property3 = cm.vars.get(2); + Assert.assertEquals(property3.baseName, "createdAt"); + Assert.assertEquals(OffsetDateTime.parse(property3.defaultValue), testOffsetDateTime); + + final CodegenProperty property4 = cm.vars.get(3); + Assert.assertEquals(property4.baseName, "birthDate"); + Assert.assertEquals(new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH).parse(property4.defaultValue), testDate); + + final CodegenProperty property5 = cm.vars.get(4); + Assert.assertEquals(property5.baseName, "active"); + Assert.assertEquals(property5.defaultValue, "true"); } @Test(description = "convert a model with list property") @@ -223,7 +301,7 @@ public class TypeScriptFetchModelTest { } @Test(description = "test enum array model") - public void enumArrayMdoelTest() { + public void enumArrayModelTest() { // TODO: update yaml file. final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml"); final DefaultCodegen codegen = new TypeScriptFetchClientCodegen(); @@ -262,7 +340,7 @@ public class TypeScriptFetchModelTest { } @Test(description = "test enum model for values (numeric, string, etc)") - public void enumMdoelValueTest() { + public void enumModelValueTest() { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml"); final DefaultCodegen codegen = new TypeScriptFetchClientCodegen(); codegen.processOpts(); @@ -297,7 +375,7 @@ public class TypeScriptFetchModelTest { @Test(description = "Add null safe additional property indexer when enabled") public void testNullSafeAdditionalProps() { final Schema model = new Schema() - .additionalProperties(new StringSchema()); + .additionalProperties(new StringSchema()); final DefaultCodegen codegen = new TypeScriptFetchClientCodegen(); codegen.additionalProperties().put("nullSafeAdditionalProps", true); codegen.processOpts(); @@ -308,7 +386,7 @@ public class TypeScriptFetchModelTest { @Test(description = "Don't add null safe additional property indexer by default") public void testWithoutNullSafeAdditionalProps() { final Schema model = new Schema() - .additionalProperties(new StringSchema()); + .additionalProperties(new StringSchema()); final DefaultCodegen codegen = new TypeScriptFetchClientCodegen(); codegen.processOpts(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularModelTest.java index 2116d62bfc53efa6f9f7b7416749165457a78474..5cb2635050c285f495e5b55e0fc85acf2d557351 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularModelTest.java @@ -21,15 +21,23 @@ import com.google.common.collect.Sets; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.media.*; import io.swagger.v3.parser.util.SchemaTypeUtil; -import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.DefaultCodegen; import org.openapitools.codegen.TestUtils; import org.openapitools.codegen.languages.TypeScriptAngularClientCodegen; +import org.openapitools.codegen.languages.TypeScriptFetchClientCodegen; import org.testng.Assert; import org.testng.annotations.Test; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.Date; +import java.util.Locale; + @SuppressWarnings("static-method") public class TypeScriptAngularModelTest { @@ -41,6 +49,7 @@ public class TypeScriptAngularModelTest { .addProperties("name", new StringSchema()) .addProperties("createdAt", new DateTimeSchema()) .addProperties("birthDate", new DateSchema()) + .addProperties("active", new BooleanSchema()) .addRequiredItem("id") .addRequiredItem("name"); final DefaultCodegen codegen = new TypeScriptAngularClientCodegen(); @@ -51,7 +60,7 @@ public class TypeScriptAngularModelTest { Assert.assertEquals(cm.name, "sample"); Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a sample model"); - Assert.assertEquals(cm.vars.size(), 4); + Assert.assertEquals(cm.vars.size(), 5); final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "id"); @@ -91,9 +100,79 @@ public class TypeScriptAngularModelTest { Assert.assertEquals(property4.name, "birthDate"); Assert.assertEquals(property4.baseType, "string"); Assert.assertEquals(property4.defaultValue, "undefined"); - Assert.assertFalse(property4.hasMore); + Assert.assertTrue(property4.hasMore); Assert.assertFalse(property4.required); Assert.assertFalse(property4.isContainer); + + final CodegenProperty property5 = cm.vars.get(4); + Assert.assertEquals(property5.baseName, "active"); + Assert.assertEquals(property5.complexType, null); + Assert.assertEquals(property5.dataType, "boolean"); + Assert.assertEquals(property5.name, "active"); + Assert.assertEquals(property5.defaultValue, "undefined"); + Assert.assertFalse(property5.hasMore); + Assert.assertFalse(property5.required); + Assert.assertFalse(property5.isContainer); + } + + @Test(description = "convert and check default values for a simple TypeScript Angular model") + public void simpleModelDefaultValuesTest() throws ParseException { + IntegerSchema integerSchema = new IntegerSchema().format(SchemaTypeUtil.INTEGER64_FORMAT); + integerSchema.setDefault(1234); + + StringSchema stringSchema = new StringSchema(); + stringSchema.setDefault("Jack"); + + OffsetDateTime testOffsetDateTime = OffsetDateTime.of(LocalDateTime.of(2020, 1, 1, 12, 0), ZoneOffset.UTC); + DateTimeSchema dateTimeSchema = new DateTimeSchema(); + dateTimeSchema.setDefault(testOffsetDateTime); + + Date testDate = Date.from(testOffsetDateTime.toInstant()); + DateSchema dateSchema = new DateSchema(); + dateSchema.setDefault(testDate); + + BooleanSchema booleanSchema = new BooleanSchema(); + booleanSchema.setDefault(true); + + final Schema model = new Schema() + .description("a sample model") + .addProperties("id", integerSchema) + .addProperties("name", stringSchema) + .addProperties("createdAt", dateTimeSchema) + .addProperties("birthDate", dateSchema) + .addProperties("active", booleanSchema) + .addRequiredItem("id") + .addRequiredItem("name"); + + final DefaultCodegen codegen = new TypeScriptFetchClientCodegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 5); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.defaultValue, "1234"); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "name"); + Assert.assertEquals(property2.defaultValue, "'Jack'"); + + final CodegenProperty property3 = cm.vars.get(2); + Assert.assertEquals(property3.baseName, "createdAt"); + Assert.assertEquals(OffsetDateTime.parse(property3.defaultValue), testOffsetDateTime); + + final CodegenProperty property4 = cm.vars.get(3); + Assert.assertEquals(property4.baseName, "birthDate"); + Assert.assertEquals(new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH).parse(property4.defaultValue), testDate); + + final CodegenProperty property5 = cm.vars.get(4); + Assert.assertEquals(property5.baseName, "active"); + Assert.assertEquals(property5.defaultValue, "true"); } @Test(description = "convert a model with list property") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangularjs/TypeScriptAngularJsModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangularjs/TypeScriptAngularJsModelTest.java index 30cb23de1d25a40fe9d4bc25d77f1e704aa95c59..98877ed7a7b1d4b46cbaac4df0120fdc123aac62 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangularjs/TypeScriptAngularJsModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangularjs/TypeScriptAngularJsModelTest.java @@ -26,9 +26,18 @@ import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.DefaultCodegen; import org.openapitools.codegen.TestUtils; import org.openapitools.codegen.languages.TypeScriptAngularJsClientCodegen; +import org.openapitools.codegen.languages.TypeScriptFetchClientCodegen; import org.testng.Assert; import org.testng.annotations.Test; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.Date; +import java.util.Locale; + @SuppressWarnings("static-method") public class TypeScriptAngularJsModelTest { @@ -40,6 +49,7 @@ public class TypeScriptAngularJsModelTest { .addProperties("name", new StringSchema()) .addProperties("createdAt", new DateTimeSchema()) .addProperties("birthDate", new DateSchema()) + .addProperties("active", new BooleanSchema()) .addRequiredItem("id") .addRequiredItem("name"); final DefaultCodegen codegen = new TypeScriptAngularJsClientCodegen(); @@ -50,7 +60,7 @@ public class TypeScriptAngularJsModelTest { Assert.assertEquals(cm.name, "sample"); Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a sample model"); - Assert.assertEquals(cm.vars.size(), 4); + Assert.assertEquals(cm.vars.size(), 5); final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "id"); @@ -88,9 +98,79 @@ public class TypeScriptAngularJsModelTest { Assert.assertEquals(property4.dataType, "string"); Assert.assertEquals(property4.name, "birthDate"); Assert.assertEquals(property4.defaultValue, "undefined"); - Assert.assertFalse(property4.hasMore); + Assert.assertTrue(property4.hasMore); Assert.assertFalse(property4.required); Assert.assertFalse(property4.isContainer); + + final CodegenProperty property5 = cm.vars.get(4); + Assert.assertEquals(property5.baseName, "active"); + Assert.assertEquals(property5.complexType, null); + Assert.assertEquals(property5.dataType, "boolean"); + Assert.assertEquals(property5.name, "active"); + Assert.assertEquals(property5.defaultValue, "undefined"); + Assert.assertFalse(property5.hasMore); + Assert.assertFalse(property5.required); + Assert.assertFalse(property5.isContainer); + } + + @Test(description = "convert and check default values for a simple TypeScript Angular model") + public void simpleModelDefaultValuesTest() throws ParseException { + IntegerSchema integerSchema = new IntegerSchema().format(SchemaTypeUtil.INTEGER64_FORMAT); + integerSchema.setDefault(1234); + + StringSchema stringSchema = new StringSchema(); + stringSchema.setDefault("Jack"); + + OffsetDateTime testOffsetDateTime = OffsetDateTime.of(LocalDateTime.of(2020, 1, 1, 12, 0), ZoneOffset.UTC); + DateTimeSchema dateTimeSchema = new DateTimeSchema(); + dateTimeSchema.setDefault(testOffsetDateTime); + + Date testDate = Date.from(testOffsetDateTime.toInstant()); + DateSchema dateSchema = new DateSchema(); + dateSchema.setDefault(testDate); + + BooleanSchema booleanSchema = new BooleanSchema(); + booleanSchema.setDefault(true); + + final Schema model = new Schema() + .description("a sample model") + .addProperties("id", integerSchema) + .addProperties("name", stringSchema) + .addProperties("createdAt", dateTimeSchema) + .addProperties("birthDate", dateSchema) + .addProperties("active", booleanSchema) + .addRequiredItem("id") + .addRequiredItem("name"); + + final DefaultCodegen codegen = new TypeScriptFetchClientCodegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 5); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.defaultValue, "1234"); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "name"); + Assert.assertEquals(property2.defaultValue, "'Jack'"); + + final CodegenProperty property3 = cm.vars.get(2); + Assert.assertEquals(property3.baseName, "createdAt"); + Assert.assertEquals(OffsetDateTime.parse(property3.defaultValue), testOffsetDateTime); + + final CodegenProperty property4 = cm.vars.get(3); + Assert.assertEquals(property4.baseName, "birthDate"); + Assert.assertEquals(new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH).parse(property4.defaultValue), testDate); + + final CodegenProperty property5 = cm.vars.get(4); + Assert.assertEquals(property5.baseName, "active"); + Assert.assertEquals(property5.defaultValue, "true"); } @Test(description = "convert a model with list property") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeModelTest.java index e2f3b7c40d564e6290b4b8cb5a7fb621c8f8cfda..0c69c6026d281dcbc3ad8604588b6c1f4d65b05a 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeModelTest.java @@ -27,10 +27,19 @@ import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.DefaultCodegen; import org.openapitools.codegen.TestUtils; +import org.openapitools.codegen.languages.TypeScriptFetchClientCodegen; import org.openapitools.codegen.languages.TypeScriptNodeClientCodegen; import org.testng.Assert; import org.testng.annotations.Test; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.Date; +import java.util.Locale; + @SuppressWarnings("static-method") public class TypeScriptNodeModelTest { @@ -42,6 +51,7 @@ public class TypeScriptNodeModelTest { .addProperties("name", new StringSchema()) .addProperties("createdAt", new DateTimeSchema()) .addProperties("birthDate", new DateSchema()) + .addProperties("active", new BooleanSchema()) .addRequiredItem("id") .addRequiredItem("name"); final DefaultCodegen codegen = new TypeScriptNodeClientCodegen(); @@ -52,7 +62,7 @@ public class TypeScriptNodeModelTest { Assert.assertEquals(cm.name, "sample"); Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a sample model"); - Assert.assertEquals(cm.vars.size(), 4); + Assert.assertEquals(cm.vars.size(), 5); final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "id"); @@ -87,8 +97,78 @@ public class TypeScriptNodeModelTest { Assert.assertEquals(property4.dataType, "string"); Assert.assertEquals(property4.name, "birthDate"); Assert.assertEquals(property4.defaultValue, "undefined"); - Assert.assertFalse(property4.hasMore); + Assert.assertTrue(property4.hasMore); Assert.assertFalse(property4.required); + + final CodegenProperty property5 = cm.vars.get(4); + Assert.assertEquals(property5.baseName, "active"); + Assert.assertEquals(property5.complexType, null); + Assert.assertEquals(property5.dataType, "boolean"); + Assert.assertEquals(property5.name, "active"); + Assert.assertEquals(property5.defaultValue, "undefined"); + Assert.assertFalse(property5.hasMore); + Assert.assertFalse(property5.required); + Assert.assertFalse(property5.isContainer); + } + + @Test(description = "convert and check default values for a simple TypeScript Angular model") + public void simpleModelDefaultValuesTest() throws ParseException { + IntegerSchema integerSchema = new IntegerSchema().format(SchemaTypeUtil.INTEGER64_FORMAT); + integerSchema.setDefault(1234); + + StringSchema stringSchema = new StringSchema(); + stringSchema.setDefault("Jack"); + + OffsetDateTime testOffsetDateTime = OffsetDateTime.of(LocalDateTime.of(2020, 1, 1, 12, 0), ZoneOffset.UTC); + DateTimeSchema dateTimeSchema = new DateTimeSchema(); + dateTimeSchema.setDefault(testOffsetDateTime); + + Date testDate = Date.from(testOffsetDateTime.toInstant()); + DateSchema dateSchema = new DateSchema(); + dateSchema.setDefault(testDate); + + BooleanSchema booleanSchema = new BooleanSchema(); + booleanSchema.setDefault(true); + + final Schema model = new Schema() + .description("a sample model") + .addProperties("id", integerSchema) + .addProperties("name", stringSchema) + .addProperties("createdAt", dateTimeSchema) + .addProperties("birthDate", dateSchema) + .addProperties("active", booleanSchema) + .addRequiredItem("id") + .addRequiredItem("name"); + + final DefaultCodegen codegen = new TypeScriptFetchClientCodegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 5); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.defaultValue, "1234"); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "name"); + Assert.assertEquals(property2.defaultValue, "'Jack'"); + + final CodegenProperty property3 = cm.vars.get(2); + Assert.assertEquals(property3.baseName, "createdAt"); + Assert.assertEquals(OffsetDateTime.parse(property3.defaultValue), testOffsetDateTime); + + final CodegenProperty property4 = cm.vars.get(3); + Assert.assertEquals(property4.baseName, "birthDate"); + Assert.assertEquals(new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH).parse(property4.defaultValue), testDate); + + final CodegenProperty property5 = cm.vars.get(4); + Assert.assertEquals(property5.baseName, "active"); + Assert.assertEquals(property5.defaultValue, "true"); } @Test(description = "convert a model with list property")