Skip to content
Snippets Groups Projects
XMLSerializerDatabaseTest.kt 3.20 KiB
package unibz.cs.semint.kprime.usecase.serialize

import junit.framework.Assert.assertEquals
import org.junit.Assert
import org.junit.Test
import org.xmlunit.builder.DiffBuilder
import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter
import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.domain.ddl.Schema
import unibz.cs.semint.kprime.domain.ddl.Table
import unibz.cs.semint.kprime.domain.dql.Attribute
import unibz.cs.semint.kprime.domain.dql.From
import unibz.cs.semint.kprime.domain.dql.Query
import unibz.cs.semint.kprime.usecase.common.XMLSerializeUseCase
import java.io.File

class XMLSerializerDatabaseTest {

    @Test
    fun test_database_serialize_with_two_empty_tables() {
        // given
        val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter())
        val database = Database()
        database.id="iddb"
        database.name="dbname"
        database.schema= Schema()
        database.schema.id="idschema"
        database.schema.tables().add(Table())
        database.schema.tables().add(Table())
        // when
        val serializedDatabase = serializer.serializeDatabase(database).ok
        // then
        val fileContent = File("target/test-classes/database_with_two_empty_tables.xml")
            .readLines().joinToString(System.lineSeparator())

        val myDiff = DiffBuilder.compare(serializedDatabase)
            .ignoreWhitespace()
            .withTest(fileContent)
            .checkForSimilar().build()
        Assert.assertFalse(myDiff.toString(), myDiff.hasDifferences());
    }


    @Test
    fun test_database_serialize_with_mappings() {
        // given
        val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter())
        val database = Database()
        database.id = "iddb"
        database.name = "dbname"
        database.schema = Schema()
        database.schema.id = "idschema"
        database.schema.tables().add(Table())
        val query = Query()
        val attr = Attribute()
        attr.name="name"
        query.select.attributes.add(attr)
        val from = From()
        from.tableName="people"
        query.select.from.add(from)
        query.name = "query1"
        database.mappings!!.add(query)
        // when
        val serializedDatabase = serializer.prettyDatabase(database).ok
        // then
        assertEquals("""
            <database name="dbname" id="iddb" source="">
              <schema name="" id="idschema">
                <tables>
                  <tables name="" id="" view="" condition="">
                    <columns/>
                  </tables>
                </tables>
                <constraints/>
              </schema>
              <mappings>
                <query name="query1">
                  <select>
                    <attributes>
                      <attributes name="name"/>
                    </attributes>
                    <from>
                      <from tableName="people" alias=""/>
                    </from>
                    <where condition=""/>
                  </select>
                  <union/>
                  <minus/>
                </query>
              </mappings>
            </database>
        """.trimIndent(),serializedDatabase)
    }

}