Skip to content
Snippets Groups Projects
XMLSerializerDatabaseTest.kt 3.2 KiB
Newer Older
npedot's avatar
npedot committed
package unibz.cs.semint.kprime.usecase.serialize

npedot's avatar
npedot committed
import junit.framework.Assert.assertEquals
npedot's avatar
npedot committed
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
npedot's avatar
npedot committed
import unibz.cs.semint.kprime.domain.dql.Attribute
import unibz.cs.semint.kprime.domain.dql.From
import unibz.cs.semint.kprime.domain.dql.Query
npedot's avatar
npedot committed
import unibz.cs.semint.kprime.usecase.common.XMLSerializeUseCase
npedot's avatar
npedot committed
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"
npedot's avatar
npedot committed
        database.schema.tables().add(Table())
        database.schema.tables().add(Table())
npedot's avatar
npedot committed
        // 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());
    }


npedot's avatar
npedot committed
    @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"
npedot's avatar
npedot committed
        database.schema.tables().add(Table())
npedot's avatar
npedot committed
        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)
npedot's avatar
npedot committed
        query.name = "query1"
        database.mappings!!.add(query)
npedot's avatar
npedot committed
        // when
        val serializedDatabase = serializer.prettyDatabase(database).ok
        // then
        assertEquals("""
npedot's avatar
npedot committed
            <database name="dbname" id="iddb" source="">
npedot's avatar
npedot committed
              <schema name="" id="idschema">
                <tables>
                  <tables name="" id="" view="" condition="">
                    <columns/>
                  </tables>
                </tables>
                <constraints/>
              </schema>
npedot's avatar
npedot committed
              <mappings>
                <query name="query1">
npedot's avatar
npedot committed
                  <select>
                    <attributes>
                      <attributes name="name"/>
                    </attributes>
                    <from>
                      <from tableName="people" alias=""/>
npedot's avatar
npedot committed
                    </from>
                    <where condition=""/>
                  </select>
                  <union/>
                  <minus/>
npedot's avatar
npedot committed
                </query>
              </mappings>
npedot's avatar
npedot committed
            </database>
        """.trimIndent(),serializedDatabase)
    }

npedot's avatar
npedot committed
}