HHH-11913 : Add test for issue
This commit is contained in:
parent
7b59cb2f8d
commit
8b313976d9
|
@ -0,0 +1,142 @@
|
|||
package org.hibernate.test.schemaupdate.index;
|
||||
|
||||
import java.util.List;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Index;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.hibernate.boot.Metadata;
|
||||
import org.hibernate.boot.MetadataSources;
|
||||
import org.hibernate.boot.registry.StandardServiceRegistry;
|
||||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
||||
import org.hibernate.dialect.H2Dialect;
|
||||
import org.hibernate.dialect.MySQLDialect;
|
||||
import org.hibernate.dialect.PostgreSQL81Dialect;
|
||||
import org.hibernate.tool.schema.internal.SchemaCreatorImpl;
|
||||
|
||||
import org.hibernate.testing.RequiresDialect;
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
@TestForIssue(jiraKey = "HHH-11913")
|
||||
@RequiresDialect(H2Dialect.class)
|
||||
@RequiresDialect(PostgreSQL81Dialect.class)
|
||||
@RequiresDialect(MySQLDialect.class)
|
||||
public class IndexesCreationTest extends BaseUnitTestCase {
|
||||
private StandardServiceRegistry ssr;
|
||||
private Metadata metadata;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
ssr = new StandardServiceRegistryBuilder().build();
|
||||
metadata = new MetadataSources( ssr )
|
||||
.addAnnotatedClass( TestEntity.class )
|
||||
.buildMetadata();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTheIndexIsGenerated() {
|
||||
final List<String> commands = new SchemaCreatorImpl( ssr ).generateCreationCommands(
|
||||
metadata,
|
||||
false
|
||||
);
|
||||
|
||||
assertThatCreateIndexCommandIsGenerated( "CREATE INDEX FIELD_1_INDEX ON TEST_ENTITY (FIELD_1)", commands );
|
||||
assertThatCreateIndexCommandIsGenerated(
|
||||
"CREATE INDEX FIELD_2_INDEX ON TEST_ENTITY (FIELD_2 DESC, FIELD_3 ASC)",
|
||||
commands
|
||||
);
|
||||
assertThatCreateIndexCommandIsGenerated(
|
||||
"CREATE INDEX FIELD_4_INDEX ON TEST_ENTITY (FIELD_4 ASC)",
|
||||
commands
|
||||
);
|
||||
}
|
||||
|
||||
private void assertThatCreateIndexCommandIsGenerated(String expectedCommand, List<String> commands) {
|
||||
boolean createIndexCommandIsGenerated = false;
|
||||
for ( String command : commands ) {
|
||||
if ( command.toLowerCase().contains( expectedCommand.toLowerCase() ) ) {
|
||||
createIndexCommandIsGenerated = true;
|
||||
}
|
||||
}
|
||||
assertTrue(
|
||||
|
||||
"Expected " + expectedCommand + " command not found",
|
||||
createIndexCommandIsGenerated
|
||||
);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
StandardServiceRegistryBuilder.destroy( ssr );
|
||||
}
|
||||
|
||||
@Entity(name = "TestEntity")
|
||||
@Table(name = "TEST_ENTITY",
|
||||
indexes = {
|
||||
@Index(name = "FIELD_1_INDEX", columnList = "FIELD_1"),
|
||||
@Index(name = "FIELD_2_INDEX", columnList = "FIELD_2 DESC, FIELD_3 ASC"),
|
||||
@Index(name = "FIELD_4_INDEX", columnList = "FIELD_4 ASC")
|
||||
}
|
||||
)
|
||||
public static class TestEntity {
|
||||
private long id;
|
||||
private String field1;
|
||||
private String field2;
|
||||
private String field3;
|
||||
private String field4;
|
||||
|
||||
@Id
|
||||
@Column
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Column(name = "FIELD_1")
|
||||
public String getField1() {
|
||||
return field1;
|
||||
}
|
||||
|
||||
public void setField1(String field1) {
|
||||
this.field1 = field1;
|
||||
}
|
||||
|
||||
@Column(name = "FIELD_2")
|
||||
public String getField2() {
|
||||
return field2;
|
||||
}
|
||||
|
||||
public void setField2(String field2) {
|
||||
this.field2 = field2;
|
||||
}
|
||||
|
||||
@Column(name = "FIELD_3")
|
||||
public String getField3() {
|
||||
return field3;
|
||||
}
|
||||
|
||||
public void setField3(String field3) {
|
||||
this.field3 = field3;
|
||||
}
|
||||
|
||||
@Column(name = "FIELD_4")
|
||||
public String getField4() {
|
||||
return field4;
|
||||
}
|
||||
|
||||
public void setField4(String field4) {
|
||||
this.field4 = field4;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue