package io.ebean.dbmigration.ddlgeneration.platform; import io.ebean.config.dbplatform.DbPlatformTypeMapping; import io.ebean.config.dbplatform.h2.H2Platform; import io.ebean.config.dbplatform.postgres.PostgresPlatform; import io.ebean.dbmigration.ddlgeneration.platform.util.PlatformTypeConverter; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class PlatformTypeConverterTest { @Test public void convert_withSuffix_expect_suffix() { PostgresPlatform pg = new PostgresPlatform(); DbPlatformTypeMapping dbTypeMap = pg.getDbTypeMap(); PlatformTypeConverter converter = new PlatformTypeConverter(dbTypeMap); assertThat(converter.convert("varchar(10)")).isEqualTo("varchar(10)"); assertThat(converter.convert("VARCHAR(10) default 'en' not null")).isEqualTo("varchar(10) default 'en' not null"); assertThat(converter.convert("DECIMAL(10,2) DEFAULT '0.00' NOT NULL")).isEqualTo("decimal(10,2) DEFAULT '0.00' NOT NULL"); assertThat(converter.convert("CRAZY(12,0) suffix")).isEqualTo("CRAZY(12,0) suffix"); assertThat(converter.convert("CRAZY(12) suffix")).isEqualTo("CRAZY(12) suffix"); assertThat(converter.convert("CRAZY suffix")).isEqualTo("CRAZY suffix"); } @Test public void testConvert_given_postgres() throws Exception { PostgresPlatform pg = new PostgresPlatform(); DbPlatformTypeMapping dbTypeMap = pg.getDbTypeMap(); PlatformTypeConverter converter = new PlatformTypeConverter(dbTypeMap); assertThat(converter.convert("varchar(10)")).isEqualTo("varchar(10)"); assertThat(converter.convert("decimal(10,2)")).isEqualTo("decimal(10,2)"); assertThat(converter.convert("clob")).isEqualTo("text"); assertThat(converter.convert("blob")).isEqualTo("bytea"); assertThat(converter.convert("tinyint")).isEqualTo("smallint"); assertThat(converter.convert("funky")).isEqualTo("funky"); // unknown assertThat(converter.convert("integer(8)")).isEqualTo("integer"); // removes scale assertThat(converter.convert("funky(")).isEqualTo("funky("); assertThat(converter.convert("funky()")).isEqualTo("funky()"); assertThat(converter.convert("funky)")).isEqualTo("funky)"); } @Test public void testConvert_given_h2() throws Exception { H2Platform platform = new H2Platform(); DbPlatformTypeMapping dbTypeMap = platform.getDbTypeMap(); PlatformTypeConverter converter = new PlatformTypeConverter(dbTypeMap); assertThat(converter.convert("varchar(10)")).isEqualTo("varchar(10)"); assertThat(converter.convert("decimal(10,2)")).isEqualTo("decimal(10,2)"); assertThat(converter.convert("clob")).isEqualTo("clob"); assertThat(converter.convert("blob")).isEqualTo("blob"); assertThat(converter.convert("tinyint")).isEqualTo("tinyint"); assertThat(converter.convert("integer(8)")).isEqualTo("integer(8)"); assertThat(converter.convert("funky")).isEqualTo("funky"); // unknown } @Test public void testConvertJsonTypes_given_postgres() { PostgresPlatform platform = new PostgresPlatform(); DbPlatformTypeMapping dbTypeMap = platform.getDbTypeMap(); PlatformTypeConverter converter = new PlatformTypeConverter(dbTypeMap); assertThat(converter.convert("jsonblob")).isEqualTo("bytea"); assertThat(converter.convert("jsonclob")).isEqualTo("text"); assertThat(converter.convert("jsonvarchar(200)")).isEqualTo("varchar(200)"); assertThat(converter.convert("json")).isEqualTo("json"); assertThat(converter.convert("jsonb")).isEqualTo("jsonb"); } @Test public void testConvertJsonTypes_given_h2() { H2Platform platform = new H2Platform(); DbPlatformTypeMapping dbTypeMap = platform.getDbTypeMap(); PlatformTypeConverter converter = new PlatformTypeConverter(dbTypeMap); assertThat(converter.convert("jsonblob")).isEqualTo("blob"); assertThat(converter.convert("jsonclob")).isEqualTo("clob"); assertThat(converter.convert("jsonvarchar(200)")).isEqualTo("varchar(200)"); assertThat(converter.convert("json")).isEqualTo("clob"); assertThat(converter.convert("jsonb")).isEqualTo("clob"); } }