1 package net.pterodactylus.sone.web.ajax
3 import com.fasterxml.jackson.databind.JsonNode
4 import com.fasterxml.jackson.databind.ObjectMapper
5 import com.fasterxml.jackson.databind.node.BooleanNode
6 import com.fasterxml.jackson.databind.node.IntNode
7 import com.fasterxml.jackson.databind.node.JsonNodeFactory
8 import com.fasterxml.jackson.databind.node.ObjectNode
9 import com.fasterxml.jackson.databind.node.TextNode
10 import org.hamcrest.MatcherAssert.assertThat
11 import org.hamcrest.Matchers.equalTo
15 * Unit test for [JsonReturnObject].
17 class JsonReturnObjectTest {
19 private val jsonReturnObject = JsonReturnObject(true)
20 private val objectMapper = ObjectMapper()
23 fun `json object retains success status if true`() {
24 assertThat(JsonReturnObject(true).isSuccess, equalTo(true))
28 fun `json object retains success status if false`() {
29 assertThat(JsonReturnObject(false).isSuccess, equalTo(false))
33 fun `json object returns text nodes for string properties`() {
34 jsonReturnObject.put("foo", "bar")
35 assertThat(jsonReturnObject["foo"], equalTo<Any>(TextNode("bar")))
39 fun `json object returns int nodes for int properties`() {
40 jsonReturnObject.put("foo", 123)
41 assertThat(jsonReturnObject["foo"], equalTo<Any>(IntNode(123)))
45 fun `json object returns boolean nodes for boolean properties`() {
46 jsonReturnObject.put("foo", true)
47 assertThat(jsonReturnObject["foo"], equalTo<Any>(BooleanNode.TRUE))
51 fun `json object returns json node for json properties`() {
52 val objectNode = ObjectNode(JsonNodeFactory.instance)
53 jsonReturnObject.put("foo", objectNode)
54 assertThat(jsonReturnObject["foo"], equalTo<Any>(objectNode))
58 fun `json object returns all properties`() {
59 val objectNode = ObjectNode(JsonNodeFactory.instance)
60 jsonReturnObject.put("text", "text")
61 jsonReturnObject.put("int", 123)
62 jsonReturnObject.put("boolean", true)
63 jsonReturnObject.put("object", objectNode)
64 assertThat(jsonReturnObject.content, equalTo<Any>(mapOf(
65 "text" to TextNode("text"),
66 "int" to IntNode(123),
67 "boolean" to BooleanNode.TRUE,
68 "object" to objectNode
73 fun `json object is serialized correctly`() {
74 val objectNode = ObjectNode(JsonNodeFactory.instance)
75 jsonReturnObject.put("text", "text")
76 jsonReturnObject.put("int", 123)
77 jsonReturnObject.put("boolean", true)
78 jsonReturnObject.put("object", objectNode)
79 val json = objectMapper.writeValueAsString(jsonReturnObject)
80 val parsedJson = objectMapper.readTree(json)
81 assertThat(parsedJson, equalTo<JsonNode>(ObjectNode(JsonNodeFactory.instance).apply {
86 put("object", objectNode)