Skip to content

Commit 514bccf

Browse files
Added more tests, but really just gotta make sure your Jackson version is 2.13 or above
1 parent c109c8e commit 514bccf

File tree

5 files changed

+54
-8
lines changed

5 files changed

+54
-8
lines changed

couchdb/src/main/java/me/retrodaredevil/couchdbjava/json/jackson/JacksonJsonData.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public JacksonJsonData deserialize(JsonParser p, DeserializationContext ctxt) th
4343

4444
@Override
4545
public Object getAbsentValue(DeserializationContext ctxt) throws JsonMappingException {
46+
// Note that this method is not available for Jackson versions below 2.13, so using 2.13 is the only thing that makes the deserialization of this work as expected
4647
return null;
4748
}
4849

couchdb/src/main/java/me/retrodaredevil/couchdbjava/response/BulkGetResponse.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.fasterxml.jackson.annotation.JsonCreator;
44
import com.fasterxml.jackson.annotation.JsonProperty;
55
import me.retrodaredevil.couchdbjava.json.JsonData;
6-
import me.retrodaredevil.couchdbjava.json.jackson.JacksonJsonData;
76
import org.jetbrains.annotations.NotNull;
87

98
import java.util.ArrayList;

couchdb/src/test/java/me/retrodaredevil/couchdbjava/instance/SolarThingBulkGetTest.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,20 @@
1111
import java.util.stream.Collectors;
1212

1313
import static java.util.Objects.requireNonNull;
14-
import static org.junit.jupiter.api.Assertions.assertEquals;
1514

1615
public class SolarThingBulkGetTest {
1716
@Test
1817
void test() throws JsonProcessingException {
19-
InputStream stream = getClass().getClassLoader().getResourceAsStream("bulk_get_data_2021-10-29.json");
20-
requireNonNull(stream, "Could not get resource");
21-
String data = new BufferedReader(new InputStreamReader(stream)).lines().parallel().collect(Collectors.joining("\n"));
22-
ObjectMapper mapper = new ObjectMapper();
23-
BulkGetResponse response = mapper.readValue(data, BulkGetResponse.class);
24-
assertEquals(88, response.getResults().size());
18+
for (String name : new String[] {
19+
"bulk_get_data_2021-10-29.json",
20+
"bulk_get_data_2021-10-30.json",
21+
}) {
22+
InputStream stream = getClass().getClassLoader().getResourceAsStream(name);
23+
requireNonNull(stream, "Could not get resource: " + name);
24+
String data = new BufferedReader(new InputStreamReader(stream)).lines().parallel().collect(Collectors.joining("\n"));
25+
ObjectMapper mapper = new ObjectMapper();
26+
mapper.readValue(data, BulkGetResponse.class);
27+
}
2528
// This test relies on the correct deserialization of JacksonJsonData.
2629
// This test was originally added because JSON undefined (not present), was being given to InnerResult's constructor has a JSON null, rather than a Java null
2730
}

couchdb/src/test/java/me/retrodaredevil/couchdbjava/json/jackson/JacksonJsonDataTest.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package me.retrodaredevil.couchdbjava.json.jackson;
22

3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
35
import com.fasterxml.jackson.core.JsonProcessingException;
46
import com.fasterxml.jackson.databind.ObjectMapper;
57
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -18,4 +20,44 @@ void test() throws JsonProcessingException {
1820
ObjectNode objectNode = (ObjectNode) jsonData.getNode();
1921
assertEquals(43, objectNode.get("test").asInt());
2022
}
23+
@Test
24+
void testWithAbsent() throws JsonProcessingException {
25+
ObjectMapper mapper = new ObjectMapper();
26+
String jsonString = "{}";
27+
mapper.readValue(jsonString, ExpectingNullWhenAbsent.class);
28+
}
29+
@Test
30+
void testWithNull() throws JsonProcessingException {
31+
ObjectMapper mapper = new ObjectMapper();
32+
String jsonString = "{\"value\":null}";
33+
mapper.readValue(jsonString, ExpectingJsonNullWhenNull.class);
34+
}
35+
@Test
36+
void testWithEmptyString() throws JsonProcessingException {
37+
ObjectMapper mapper = new ObjectMapper();
38+
String jsonString = "{\"value\":\"\"}";
39+
mapper.readValue(jsonString, ExpectingEmptyStringWhenEmptyString.class);
40+
}
41+
42+
private static class ExpectingNullWhenAbsent {
43+
44+
@JsonCreator
45+
public ExpectingNullWhenAbsent(@JsonProperty("value") JsonData data) {
46+
assertNull(data);
47+
}
48+
}
49+
private static class ExpectingJsonNullWhenNull {
50+
51+
@JsonCreator
52+
public ExpectingJsonNullWhenNull(@JsonProperty("value") JsonData data) {
53+
assertEquals("null", data.getJson());
54+
}
55+
}
56+
private static class ExpectingEmptyStringWhenEmptyString {
57+
58+
@JsonCreator
59+
public ExpectingEmptyStringWhenEmptyString(@JsonProperty("value") JsonData data) {
60+
assertEquals("\"\"", data.getJson());
61+
}
62+
}
2163
}

couchdb/src/test/resources/bulk_get_data_2021-10-30.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)