package unibz.cs.semint.kprime.usecase.serialize import org.junit.Assert.assertFalse import org.junit.Test import org.xmlunit.builder.DiffBuilder import unibz.cs.semint.kprime.adapter.XMLSerializerJacksonAdapter import unibz.cs.semint.kprime.domain.Column import unibz.cs.semint.kprime.domain.Table import unibz.cs.semint.kprime.usecase.XMLSerializeUseCase import java.io.File import kotlin.test.assertEquals import kotlin.test.assertNotNull class XMLSerializerTableTest { @Test fun test_empty_table_serialize() { // given val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()) // when var table = Table() table.name="Gigi" table.id="22" val result = serializer.serializeTable(table).ok // then assertEquals("<table name=\"Gigi\" id=\"22\"><columns/></table>",result) } @Test fun test_table_with_two_columns_serialize() { // given val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()) // when var table = Table() table.name="Gigi" table.id="22" table.columns.add(Column(name="col1",id = "id1", dbname = "dbname1")) table.columns.add(Column(name="col2",id = "id2", dbname = "dbname2")) val result = serializer.serializeTable(table).ok // then assertEquals("<table name=\"Gigi\" id=\"22\"><columns><columns name=\"col1\" id=\"id1\" dbname=\"dbname1\" nullable=\"false\" dbtype=\"\"/><columns name=\"col2\" id=\"id2\" dbname=\"dbname2\" nullable=\"false\" dbtype=\"\"/></columns></table>",result) } @Test fun test_table_with_two_columns_serialize_from_file() { // given val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()) var table = Table() table.name="Gigi" table.id="23" table.columns.add(Column(name="col1",id = "id1", dbname = "dbname1")) table.columns.add(Column(name="col2",id = "id2", dbname = "dbname2")) // when val result = serializer.prettyTable(table).ok print(result) // then val file1 = File("target/test-classes/table_two_columns.xml") println(file1.absoluteFile) val fileContent = file1.readLines().joinToString(System.lineSeparator()) val myDiff = DiffBuilder.compare(fileContent) .ignoreWhitespace() .withTest(result) .checkForSimilar().build() assertFalse(myDiff.toString(), myDiff.hasDifferences()); } @Test fun test_table_deserialize() { // given val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()) // when val result = serializer.deserializeTable("<Table><name>Gigi</name></Table>").ok // then assertNotNull(result) assertEquals("Gigi",result.name) assertEquals("",result.id) } @Test fun test_table_deserialize_attributes() { // given val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()) // when val result = serializer.deserializeTable("<table name=\"Gigi\" id=\"22\"/>").ok // then assertNotNull(result) assertEquals("Gigi",result.name) assertEquals("22",result.id) } @Test fun test_table_with_columns_from_file() { // given val serializer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()) val file1 = File("target/test-classes/table_minimal.xml") println(file1.absoluteFile) val fileContent = file1.readLines().joinToString(System.lineSeparator()) // when val result = serializer.deserializeTable(fileContent).ok // then assertNotNull(result) assertEquals("Gigi",result.name) assertEquals("22",result.id) } }