Skip to content
Snippets Groups Projects
SQLizeCreateUseCaseTest.kt 2.08 KiB
Newer Older
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
npedot's avatar
npedot committed
import unibz.cs.semint.kprime.domain.dql.Mapping
import unibz.cs.semint.kprime.usecase.common.SQLizeCreateUseCase
npedot's avatar
npedot committed
import unibz.cs.semint.kprime.usecase.common.UnSQLizeSelectUseCase
import java.util.*
import kotlin.test.assertEquals
npedot's avatar
npedot committed
import kotlin.test.assertTrue

class SQLizeCreateUseCaseTest {

    @Test
    fun test_add_columns() {
        // given
        val sqlize = SQLizeCreateUseCase()
        val changeSet = ChangeSet()
        val columnsToAdd = CreateColumn()
        columnsToAdd.name = "table1"
npedot's avatar
npedot committed
        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])
    }
npedot's avatar
npedot committed

    @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])
    }