Files
pairgoth/api-webapp/src/test/kotlin/ImportExportTests.kt
2024-02-28 12:09:43 +01:00

60 lines
2.7 KiB
Kotlin

package org.jeudego.pairgoth.test
import org.jeudego.pairgoth.ext.OpenGotha
import org.jeudego.pairgoth.model.toJson
import org.jeudego.pairgoth.util.XmlUtils
import org.junit.jupiter.api.Test
import java.nio.charset.StandardCharsets
import kotlin.test.assertEquals
class ImportExportTests: TestBase() {
companion object {
val maskIdRegex = Regex("(?<=\"id\" ?: ?)\\d+")
}
@Test
fun `001 test imports`() {
getTestResources("opengotha/tournamentfiles/")?.forEach { file ->
logger.info("reading resource ${file.canonicalPath}")
val resource = file.readText(StandardCharsets.UTF_8)
//logger.info("post resource to api: $resource")
val resp = TestAPI.post("/api/tour", resource)
val id = resp.asObject().getInt("id")
logger.info("read tournament id: $id")
val tournament = TestAPI.get("/api/tour/$id").asObject()
logger.info(tournament.toString().slice(0..50) + "...")
val players = TestAPI.get("/api/tour/$id/part").asArray()
logger.info(players.toString().slice(0..50) + "...")
for (round in 1..tournament.getInt("rounds")!!) {
val games = TestAPI.get("/api/tour/$id/res/1").asArray()
logger.info("games for round $round: {}", games.toString().slice(0..50) + "...")
}
val xml = TestAPI.getXml("/api/tour/$id")
logger.info(xml.slice(0..50)+"...")
}
}
@Test
fun `002 test opengotha import export`() {
// We import a tournament
// Check that after exporting and reimporting we get the same pairgoth tournament object
getTestResources("opengotha/tournamentfiles")?.forEach { file ->
val resource = file.readText(StandardCharsets.UTF_8)
val root_xml = XmlUtils.parse(resource)
val tournament = OpenGotha.import(root_xml)
// version which also compares players and games (not ready, need to reset ids in store)
// val jsonTournament = tournament.toFullJson().toPrettyString()!!.replace(maskIdRegex, "0")
val jsonTournament = tournament.toJson().toPrettyString()!!.replace(maskIdRegex, "0")
val exported = OpenGotha.export(tournament)
val tournament2 = OpenGotha.import(XmlUtils.parse(exported))
// version which also compares players and games (not ready, need to reset ids in store)
// val jsonTournament2 = tournament2.toFullJson().toPrettyString()!!.replace(maskIdRegex, "0")
val jsonTournament2 = tournament2.toJson().toPrettyString()!!.replace(maskIdRegex, "0")
assertEquals(jsonTournament, jsonTournament2)
}
}
}