package io.ebean.dbmigration.model.build; import io.ebean.BaseTestCase; import io.ebean.EbeanServerFactory; import io.ebean.config.ServerConfig; import io.ebean.dbmigration.ddlgeneration.Helper; import io.ebean.dbmigration.migration.Migration; import io.ebean.dbmigration.migrationreader.MigrationXmlReader; import io.ebean.dbmigration.model.CurrentModel; import io.ebean.dbmigration.model.MTable; import io.ebean.dbmigration.model.ModelContainer; import io.ebeaninternal.api.SpiEbeanServer; import org.tests.model.basic.CKeyAssoc; import org.tests.model.basic.CKeyDetail; import org.tests.model.basic.CKeyParent; import org.tests.model.basic.CKeyParentId; import org.junit.Test; import java.io.IOException; import static org.assertj.core.api.Assertions.assertThat; public class ModelBuild_compoundKeyTest extends BaseTestCase { private SpiEbeanServer getServer() { System.setProperty("ebean.ignoreExtraDdl", "true"); ServerConfig config = new ServerConfig(); config.setName("h2"); config.loadFromProperties(); config.setName("h2other"); config.setH2ProductionMode(true); config.setDdlGenerate(false); config.setDdlRun(false); config.setDefaultServer(false); config.setRegister(false); config.addClass(CKeyDetail.class); config.addClass(CKeyParent.class); config.addClass(CKeyAssoc.class); config.addClass(CKeyParentId.class); return (SpiEbeanServer) EbeanServerFactory.create(config); } @Test public void test() throws IOException { SpiEbeanServer ebeanServer = getServer(); CurrentModel currentModel = new CurrentModel(ebeanServer); ModelContainer model = currentModel.read(); MTable parent = model.getTable("ckey_parent"); MTable detail = model.getTable("ckey_detail"); assertThat(parent).isNotNull(); assertThat(detail).isNotNull(); assertThat(parent.primaryKeyColumns()).hasSize(2); assertThat(detail.getCompoundKeys()).hasSize(1); String apply = Helper.asText(this, "/assert/ModelBuild_compoundKeyTest/apply.sql"); String createDdl = currentModel.getCreateDdl(); assertThat(createDdl).isEqualTo(apply); } @Test public void testFromMigration() throws IOException { Migration migration = MigrationXmlReader.read("/container/test-compoundkey.xml"); SpiEbeanServer ebeanServer = getServer(); CurrentModel currentModel = new CurrentModel(ebeanServer); currentModel.setChangeSet(migration.getChangeSet().get(0)); String createDdl = currentModel.getCreateDdl(); String apply = Helper.asText(this, "/assert/ModelBuild_compoundKeyTest/apply.sql"); assertThat(createDdl).isEqualTo(apply); } }