Newer
Older
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"
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("""
<schema name="" id="idschema">
<tables>
<tables name="" id="" view="" condition="">
<columns/>
</tables>
</tables>
<constraints/>
</schema>
<select>
<attributes>
<attributes name="name"/>
</attributes>
<from>
</from>
<where condition=""/>
</select>
<union>
<selects/>
</union>
<minus>
<selects/>
</minus>
</database>
""".trimIndent(),serializedDatabase)
}