From 09194a089df0422eb5ad79b8d2bd6e82149edce1 Mon Sep 17 00:00:00 2001 From: 4Ply Date: Mon, 6 Jan 2025 00:38:50 +0200 Subject: [PATCH] Fix scoreboard schema for Brilliance data, and add tests to catch this earlier next time --- build.gradle | 24 +++++++++++++++++++ .../trackedout/data/BrillianceScoreboards.kt | 8 ++++++- .../listeners/BrillianceDataParserTest.kt | 24 +++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/test/kotlin/org/trackedout/listeners/BrillianceDataParserTest.kt diff --git a/build.gradle b/build.gradle index fd8f306..e168ff0 100644 --- a/build.gradle +++ b/build.gradle @@ -63,6 +63,12 @@ dependencies { // Fabric permissions include(modImplementation('me.lucko:fabric-permissions-api:0.2-SNAPSHOT')) + + // Add JUnit dependencies for testing + testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.0") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.0") + + testImplementation 'com.google.guava:guava:32.1.2-jre' } def brillianceDataDir = "data/brilliance-data" @@ -91,6 +97,20 @@ processResources { } } +processTestResources { + from(scoreboardsJsonPath) { + into(brillianceDataDir) + } + from(cardsJsonPath) { + rename { "cards.json" } + into(brillianceDataDir) + } + from(artifactsJsonPath) { + rename { "artifacts.json" } + into(brillianceDataDir) + } +} + tasks.withType(JavaCompile).configureEach { it.options.release = 17 } @@ -133,3 +153,7 @@ publishing { // retrieving dependencies. } } + +test { + useJUnitPlatform() +} diff --git a/src/main/kotlin/org/trackedout/data/BrillianceScoreboards.kt b/src/main/kotlin/org/trackedout/data/BrillianceScoreboards.kt index ff9dc4a..bff6f06 100644 --- a/src/main/kotlin/org/trackedout/data/BrillianceScoreboards.kt +++ b/src/main/kotlin/org/trackedout/data/BrillianceScoreboards.kt @@ -10,5 +10,11 @@ data class BrillianceScoreboardDescription( val displayText: String? = null, val description: String, val canEditForRunTypes: List? = null, - val values: Map? = mapOf(), + val values: Map? = mapOf(), +) + +@Serializable +data class ScoreboardValue( + val title: String? = null, + val description: String? = null, ) diff --git a/src/test/kotlin/org/trackedout/listeners/BrillianceDataParserTest.kt b/src/test/kotlin/org/trackedout/listeners/BrillianceDataParserTest.kt new file mode 100644 index 0000000..942a59f --- /dev/null +++ b/src/test/kotlin/org/trackedout/listeners/BrillianceDataParserTest.kt @@ -0,0 +1,24 @@ +package org.trackedout.listeners + +import org.junit.jupiter.api.Test +import org.trackedout.data.BrillianceCard +import org.trackedout.data.BrillianceScoreboardDescription + +class BrillianceDataParserTest { + val scoreboardsJsonPath = "data/brilliance-data/scoreboards.json" + val cardsJsonPath = "data/brilliance-data/cards.json" + + @Test + fun `scoreboards data parsing`() { + val scoreboardData = this::class.java.classLoader.getResourceAsStream(scoreboardsJsonPath)!!.bufferedReader().use { it.readText() } + json.decodeFromString>(scoreboardData) + println("Successfully parsed scoreboards.json") + } + + @Test + fun `cards data parsing`() { + val cardsData = this::class.java.classLoader.getResourceAsStream(cardsJsonPath)!!.bufferedReader().use { it.readText() } + json.decodeFromString>(cardsData) + println("Successfully parsed cards.json") + } +}