Newer
Older
package unibz.cs.semint.kprime.usecase.serialize
import org.junit.Test
import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter
import unibz.cs.semint.kprime.usecase.common.SQLizeUseCase
import unibz.cs.semint.kprime.usecase.common.XMLSerializeUseCase
import java.io.File
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
class XMLDeserializerDatabaseTest {
@Test
fun test_deserialize_depemp_database(){
//given
val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter())
val fileContent = File("target/test-classes/depemp.xml")
.readLines().joinToString(System.lineSeparator())
// when
val deserialized = serializer.deserializeDatabase(fileContent)
// then
assertNotNull(deserialized)
assertEquals("univ",deserialized.ok!!.schema.tables()[0].name)
@Test
fun test_deserialize_mapping_database(){
//given
val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter())
val fileContent = """
<database name="dbname" id="iddb">
<schema name="" id="idschema">
<tables>
<tables name="" id="" view="" condition="">
<columns>
<columns name="SSN" id="" dbname=""/>
<columns name="Name" id="" dbname=""/>
<columns name="DepName" id="" dbname=""/>
<columns name="DepAddress" id="" dbname=""/>
</columns>
</tables>
</tables>
<constraints>
<constraints name="depname-has-address-depaddress" id="" type="">
<source name="" id="" table="">
<columns>
<columns name="DepName" id="" dbname=""/>
</columns>
</source>
<target name="" id="" table="">
<columns>
<columns name="DepAddress" id="" dbname=""/>
</columns>
</target>
</constraints>
</constraints>
</schema>
<select>
<attributes>
<attributes name="name"/>
</attributes>
<from>
<from tableName="people" alias="" joinOn=""/>
</from>
<where condition=""/>
</select>
</query>
<query name="query3">
<select>
<attributes>
<attributes name="name"/>
</attributes>
<from>
<from tableName="people" alias="" joinOn=""/>
</from>
<where condition=""/>
</select>
</query>
</mappings>
</database>
""".trimIndent()
// when
val deserialized = serializer.deserializeDatabase(fileContent)
// then
assertNotNull(deserialized)
assertNotNull(deserialized.ok)
val database = deserialized.ok as Database
assertNotNull(database.mappings)
assertEquals(database.mappings().size,2)
assertNotNull(database.mapping("query1"))
assertEquals("people",deserialized!!.ok!!.mapping("query1")!!.select!!.from[0]?.tableName)
db.mappings().add(SQLizeUseCase().fromsql("query2","""
assertEquals(3, db.mappings().size)
assertNotNull(database.mapping("query2"))
assertEquals("*",deserialized!!.ok!!.mapping("query2")!!.select!!.attributes[0]?.name)
assertEquals("alias",deserialized!!.ok!!.mapping("query2")!!.select!!.from[0]?.tableName)