package unibz.cs.semint.kprime.usecase import org.junit.Test import unibz.cs.semint.kprime.domain.ddl.Column import unibz.cs.semint.kprime.domain.ddl.Table import unibz.cs.semint.kprime.domain.dml.ChangeSet import unibz.cs.semint.kprime.domain.dml.CreateColumn import unibz.cs.semint.kprime.domain.dql.Mapping import unibz.cs.semint.kprime.usecase.common.SQLizeCreateUseCase import unibz.cs.semint.kprime.usecase.common.UnSQLizeSelectUseCase import java.util.* import kotlin.test.assertEquals import kotlin.test.assertTrue class SQLizeCreateUseCaseTest { @Test fun test_add_columns() { // given val sqlize = SQLizeCreateUseCase() val changeSet = ChangeSet() val columnsToAdd = CreateColumn() columnsToAdd.name = "table1" val col1 = Column(name = "col1", id = "id1", dbname = "dbname1") col1.dbtype = "varchar" columnsToAdd.columns.add(col1) val col2 = Column(name = "col2", id = "id1", dbname = "dbname1") col2.dbtype = "varchar" columnsToAdd.columns.add(col2) val createColumns = ArrayList<CreateColumn>() createColumns.add(columnsToAdd) changeSet.createColumn = createColumns // when val createCommands = sqlize.createCommands(changeSet) // then assertEquals(2,createCommands.size) assertEquals("ALTER TABLE table1 ADD col1 VARCHAR NOT NULL", createCommands[0]) assertEquals("ALTER TABLE table1 ADD col2 VARCHAR NOT NULL", createCommands[1]) } @Test fun test_create_one_sql_mapping(){ val unsqlize = UnSQLizeSelectUseCase() val sqlize = SQLizeCreateUseCase() val changeset = ChangeSet() var mapping = unsqlize.fromsql("myquery","SELECT DISTINCT * FROM Person") assertTrue(mapping.select.distinct) changeset.createMapping.add(mapping) val createTableMappings = sqlize.createTableMappings(changeset) assertEquals(""" CREATE TABLE public.myquery AS SELECT DISTINCT * FROM Person LIMIT 10 """.trimIndent(),createTableMappings[0]) } }