🚧 Add state for JSON objects
[rhynodge.git] / src / test / kotlin / net / pterodactylus / rhynodge / states / JsonStateTest.kt
diff --git a/src/test/kotlin/net/pterodactylus/rhynodge/states/JsonStateTest.kt b/src/test/kotlin/net/pterodactylus/rhynodge/states/JsonStateTest.kt
new file mode 100644 (file)
index 0000000..b21095e
--- /dev/null
@@ -0,0 +1,37 @@
+package net.pterodactylus.rhynodge.states
+
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import com.spotify.hamcrest.jackson.JsonMatchers.jsonObject
+import org.hamcrest.MatcherAssert.assertThat
+import org.junit.Test
+import java.io.StringWriter
+
+class JsonStateTest {
+
+       @Test
+       fun `json state can be serialized`() {
+               val jsonState = JsonState(jsonObject)
+               StringWriter().use { stringWriter ->
+                       objectMapper.writeValue(stringWriter, jsonState)
+                       val deserializedState = objectMapper.readValue(stringWriter.toString(), AbstractState::class.java) as JsonState
+                       assertThat(deserializedState.jsonNode, jsonObject(jsonObject))
+               }
+       }
+
+       private val jsonObject = objectMapper.createObjectNode()
+               .put("state", "foo")
+               .also {
+                       it.putArray("list")
+                               .add("value1")
+                               .add("value2")
+               }.also {
+                       it.putObject("object")
+                               .put("foo", true)
+                               .put("bar", "yes")
+                               .put("baz", 1.5)
+                               .putNull("qux")
+               }
+
+}
+
+private val objectMapper = jacksonObjectMapper()