@Test public void generate_sql_type_on_h2() { assertThat(underTest.generateSqlType(new H2())).isEqualTo("CLOB(2147483647)"); }
@Test public void rename_table_on_h2() { verifySql(new H2(), "ALTER TABLE foo RENAME TO bar"); }
@Test public void create_unique_index() throws Exception { when(db.getDialect()).thenReturn(new H2()); AddUniqueIndexOnUuidOfSnapshots underTest = new AddUniqueIndexOnUuidOfSnapshots(db); underTest.execute(context); verify(context).execute(asList("CREATE UNIQUE INDEX analyses_uuid ON snapshots (uuid)")); verifyNoMoreInteractions(context); } }
@Test public void fail_with_ISE_if_no_column() { thrown.expect(IllegalStateException.class); thrown.expectMessage("No column has been defined"); new AddColumnsBuilder(new H2(), TABLE_NAME).build(); }
@Test public void update_not_nullable_column_on_h2() { assertThat(createNotNullableBuilder(new H2()).build()) .containsOnly("ALTER TABLE issues ALTER COLUMN name VARCHAR (10) NOT NULL"); }
@Test public void throw_IAE_if_name_is_not_valid() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Table name must be lower case and contain only alphanumeric chars or '_', got '(not valid)'"); new RenameTableBuilder(new H2()).setName("(not valid)").build(); }
@Test public void throw_NPE_if_table_name_is_missing() { expectedException.expect(NullPointerException.class); expectedException.expectMessage("Table name cannot be null"); new DropIndexBuilder(new H2()) .setName("issues_key") .build(); }
@Test public void generate_sql_type() { TinyIntColumnDef def = new TinyIntColumnDef.Builder() .setColumnName("foo") .setIsNullable(true) .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("TINYINT"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("SMALLINT"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("TINYINT"); assertThat(def.generateSqlType(new MySql())).isEqualTo("TINYINT(2)"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMBER(3)"); }
@Test public void generate_sql_type() { BooleanColumnDef def = new BooleanColumnDef.Builder() .setColumnName("enabled") .setIsNullable(true) .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("BOOLEAN"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("BOOLEAN"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("BIT"); assertThat(def.generateSqlType(new MySql())).isEqualTo("TINYINT(1)"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMBER(1)"); }
@Test public void generate_sql_type() { TimestampColumnDef def = newTimestampColumnDefBuilder() .setColumnName("created_at") .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("TIMESTAMP"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("TIMESTAMP"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("DATETIME"); assertThat(def.generateSqlType(new MySql())).isEqualTo("DATETIME"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("TIMESTAMP (6)"); }
@Test public void generate_sql_type() { BigIntegerColumnDef def = new BigIntegerColumnDef.Builder() .setColumnName("issues") .setIsNullable(true) .build(); assertThat(def.generateSqlType(new H2())).isEqualTo("BIGINT"); assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("BIGINT"); assertThat(def.generateSqlType(new MsSql())).isEqualTo("BIGINT"); assertThat(def.generateSqlType(new MySql())).isEqualTo("BIGINT"); assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMBER (38)"); }
@Test public void throw_IAE_if_new_name_is_not_valid() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Table name must be lower case and contain only alphanumeric chars or '_', got '(not valid)'"); new RenameTableBuilder(new H2()).setName("foo").setNewName("(not valid)").build(); }
@Test public void throw_IAE_if_columns_are_missing() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("at least one column must be specified"); new CreateIndexBuilder(new H2()) .setTable("issues") .setName("issues_key") .build(); }
@Test public void throw_IAE_if_index_name_is_not_valid() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Index name must be lower case and contain only alphanumeric chars or '_', got '(not valid)'"); new DropIndexBuilder(new H2()) .setTable("issues") .setName("(not valid)") .build(); } }
@Test public void throw_NPE_when_adding_null_column() { expectedException.expect(NullPointerException.class); expectedException.expectMessage("Column cannot be null"); new CreateIndexBuilder(new H2()) .setTable("issues") .setName("issues_key") .addColumn(null) .build(); }
@Test public void create_index_on_single_column() { verifySql(new CreateIndexBuilder(new H2()) .setTable("issues") .setName("issues_key") .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build()), "CREATE INDEX issues_key ON issues (kee)"); }
@Test public void create_unique_index_on_single_column() { verifySql(new CreateIndexBuilder(new H2()) .setTable("issues") .setName("issues_key") .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build()) .setUnique(true), "CREATE UNIQUE INDEX issues_key ON issues (kee)"); }
@Test public void throw_NPE_if_table_is_missing() { expectedException.expect(NullPointerException.class); expectedException.expectMessage("Table name cannot be null"); new CreateIndexBuilder(new H2()) .setName("issues_key") .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build()) .build(); }
@Test public void throw_IAE_if_table_name_is_not_valid() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Table name must be lower case and contain only alphanumeric chars or '_', got '(not valid)'"); new CreateIndexBuilder(new H2()) .setTable("(not valid)") .setName("issues_key") .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build()) .build(); }
@Test public void index_length_is_not_specified_on_big_varchar_columns_if_not_mysql() { Arrays.<Dialect>asList(new H2(), new MsSql(), new PostgreSql(), new Oracle()) .forEach(dialect -> verifySql(new CreateIndexBuilder(dialect) .setTable("issues") .setName("issues_key") .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(4000).build()), "CREATE INDEX issues_key ON issues (kee)")); }