HHH-10605 - Add test for issue

This commit is contained in:
Andrea Boriero 2016-04-11 21:18:57 +01:00
parent 82fe5926bb
commit d97bd9722f
1 changed files with 123 additions and 0 deletions

View File

@ -0,0 +1,123 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.schemaupdate;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.util.EnumSet;
import java.util.Map;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.spi.MetadataImplementor;
import org.hibernate.cfg.Environment;
import org.hibernate.dialect.HSQLDialect;
import org.hibernate.engine.config.spi.ConfigurationService;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.tool.schema.SourceType;
import org.hibernate.tool.schema.TargetType;
import org.hibernate.tool.schema.spi.CommandAcceptanceException;
import org.hibernate.tool.schema.spi.ExceptionHandler;
import org.hibernate.tool.schema.spi.ExecutionOptions;
import org.hibernate.tool.schema.spi.SchemaDropper;
import org.hibernate.tool.schema.spi.SchemaManagementTool;
import org.hibernate.tool.schema.spi.ScriptSourceInput;
import org.hibernate.tool.schema.spi.ScriptTargetOutput;
import org.hibernate.tool.schema.spi.SourceDescriptor;
import org.hibernate.tool.schema.spi.TargetDescriptor;
import org.junit.Before;
import org.junit.Test;
import org.hibernate.testing.RequiresDialect;
import org.hibernate.testing.ServiceRegistryBuilder;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.junit4.BaseUnitTestCase;
/**
* @author Andrea Boriero
*/
@TestForIssue(jiraKey = "HHH-10605")
@RequiresDialect(value = HSQLDialect.class)
public class SchemaDropTest extends BaseUnitTestCase implements ExecutionOptions, ExceptionHandler {
protected ServiceRegistry serviceRegistry;
protected MetadataImplementor metadata;
@Before
public void setUp() {
serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( Environment.getProperties() );
metadata = (MetadataImplementor) new MetadataSources( serviceRegistry )
.addAnnotatedClass( MyEntity.class ).buildMetadata();
metadata.validate();
}
@Test
public void testDropSequence() {
getSchemaDropper()
.doDrop( metadata, this, getSourceDescriptor(), getTargetDescriptor() );
}
private SchemaDropper getSchemaDropper() {
return serviceRegistry.getService( SchemaManagementTool.class ).getSchemaDropper( null );
}
private TargetDescriptor getTargetDescriptor() {
return new TargetDescriptor() {
@Override
public EnumSet<TargetType> getTargetTypes() {
return EnumSet.of( TargetType.DATABASE );
}
@Override
public ScriptTargetOutput getScriptTargetOutput() {
return null;
}
};
}
private SourceDescriptor getSourceDescriptor() {
return new SourceDescriptor() {
@Override
public SourceType getSourceType() {
return SourceType.METADATA;
}
@Override
public ScriptSourceInput getScriptSourceInput() {
return null;
}
};
}
@Override
public Map getConfigurationValues() {
return serviceRegistry.getService( ConfigurationService.class ).getSettings();
}
@Override
public boolean shouldManageNamespaces() {
return false;
}
@Override
public ExceptionHandler getExceptionHandler() {
return this;
}
@Override
public void handleException(CommandAcceptanceException exception) {
throw exception;
}
@Entity(name = "MyEntity")
public static class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
Long id;
}
}