Skip to content

Commit 257151a

Browse files
LarsEckartJayBazuziisidore
committed
- F allow customization of ObjectMapper used in JsonJacksonApprovals - closes #478
Co-authored-by: Jay Bazuzi <[email protected]> Co-authored-by: Llewellyn Falco <[email protected]>
1 parent 449b5c8 commit 257151a

File tree

6 files changed

+39
-5
lines changed

6 files changed

+39
-5
lines changed

approvaltests-tests/src/test/java/org/approvaltests/DocumentHelpersTest.listAllVerifyFunctions.approved.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L17-L20) (String, $\color{#AAA}{\textsf{Options}}$)
5757
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L37-L40) (String, boolean, $\color{#AAA}{\textsf{Options}}$)
5858
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L29-L36) (String, boolean, Function1, $\color{#AAA}{\textsf{Options}}$)
59-
* JsonJacksonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonJacksonApprovals.java#L14-L17) (Object, $\color{#AAA}{\textsf{Options}}$)
59+
* JsonJacksonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonJacksonApprovals.java#L17-L20) (Object, $\color{#AAA}{\textsf{Options}}$)
60+
* JsonJacksonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonJacksonApprovals.java#L25-L28) (Object, Function1, $\color{#AAA}{\textsf{Options}}$)
6061
* JsonXstreamApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonXstreamApprovals.java#L18-L21) (Object, $\color{#AAA}{\textsf{Options}}$)
6162
* VelocityApprovals. [verify ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/velocity/VelocityApprovals.java#L16-L24) (ContextAware, $\color{#AAA}{\textsf{Options}}$)

approvaltests-tests/src/test/java/org/approvaltests/JsonJacksonApprovalsTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
11
package org.approvaltests;
22

33
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import com.fasterxml.jackson.annotation.JsonInclude;
5+
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import com.google.gson.GsonBuilder;
47
import org.junit.jupiter.api.Test;
58

69
public class JsonJacksonApprovalsTest
710
{
11+
@Test
12+
void testObjectMapperOverride()
13+
{
14+
MyClass o = new MyClass();
15+
16+
JsonJacksonApprovals.verifyAsJson(o, (om)-> om
17+
.setSerializationInclusion(JsonInclude.Include.NON_NULL));
18+
}
819
@Test
920
void testDuplicateFields()
1021
{
@@ -15,6 +26,7 @@ private static class MyClass
1526
@JsonIgnore
1627
private String name = "MyClass";
1728
public String lastName = "MyClass";
29+
public String middleName = null;
1830
public String getName()
1931
{
2032
return name;
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
{
2-
"lastName" : "MyClass"
2+
"lastName" : "MyClass",
3+
"middleName" : null
34
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"lastName" : "MyClass"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"lastName" : "MyClass"
3+
}

approvaltests/src/main/java/org/approvaltests/JsonJacksonApprovals.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import com.fasterxml.jackson.databind.ObjectMapper;
55
import com.spun.util.ObjectUtils;
66
import org.approvaltests.core.Options;
7+
import org.lambda.functions.Function1;
8+
9+
import java.util.function.Function;
710

811
public class JsonJacksonApprovals
912
{
@@ -13,13 +16,24 @@ public static void verifyAsJson(Object o)
1316
}
1417
public static void verifyAsJson(Object o, Options options)
1518
{
16-
Approvals.verify(asJson(o), options.forFile().withExtension(".json"));
19+
verifyAsJson(o, a -> a, options);
20+
}
21+
public static void verifyAsJson(Object o, Function1<ObjectMapper, ObjectMapper> objectMapperBuilder)
22+
{
23+
verifyAsJson(o, objectMapperBuilder, new Options());
24+
}
25+
public static void verifyAsJson(Object o, Function1<ObjectMapper, ObjectMapper> objectMapperBuilder, Options options)
26+
{
27+
Approvals.verify(asJson(o, objectMapperBuilder), options.forFile().withExtension(".json"));
28+
}
29+
public static String asJson(Object o) {
30+
return asJson(o, a -> a);
1731
}
18-
public static String asJson(Object o)
32+
public static String asJson(Object o, Function1<ObjectMapper, ObjectMapper> objectMapperBuilder)
1933
{
2034
try
2135
{
22-
ObjectMapper objectMapper = new ObjectMapper();
36+
ObjectMapper objectMapper = objectMapperBuilder.call(new ObjectMapper());
2337
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(o);
2438
}
2539
catch (JsonProcessingException e)

0 commit comments

Comments
 (0)