Skip to content

Commit 4214e81

Browse files
committed
- F verifyJson() accepts GsonBuilder
Fixes #479
1 parent 3d2c129 commit 4214e81

File tree

5 files changed

+45
-6
lines changed

5 files changed

+45
-6
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@
5151
* CombinationApprovals. [verifyBestCoveringPairs ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/combinations/CombinationApprovals.java#L291-L299) (Function7, Object[], Object[], Object[], Object[], Object[], Object[], Object[], $\color{#AAA}{\textsf{Options}}$)
5252
* CombinationApprovals. [verifyBestCoveringPairs ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/combinations/CombinationApprovals.java#L309-L317) (Function8, Object[], Object[], Object[], Object[], Object[], Object[], Object[], Object[], $\color{#AAA}{\textsf{Options}}$)
5353
* CombinationApprovals. [verifyBestCoveringPairs ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/combinations/CombinationApprovals.java#L326-L333) (Function9, Object[], Object[], Object[], Object[], Object[], Object[], Object[], Object[], Object[], $\color{#AAA}{\textsf{Options}}$)
54-
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L44-L47) (Object, $\color{#AAA}{\textsf{Options}}$)
55-
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L39-L42) (Object, Function1, $\color{#AAA}{\textsf{Options}}$)
56-
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L18-L21) (String, $\color{#AAA}{\textsf{Options}}$)
57-
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L26-L30) (String, boolean, $\color{#AAA}{\textsf{Options}}$)
54+
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L53-L56) (Object, $\color{#AAA}{\textsf{Options}}$)
55+
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L48-L51) (Object, Function1, $\color{#AAA}{\textsf{Options}}$)
56+
* 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}}$)
57+
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L35-L39) (String, boolean, $\color{#AAA}{\textsf{Options}}$)
58+
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L29-L34) (String, boolean, Function1, $\color{#AAA}{\textsf{Options}}$)
5859
* 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}}$)
5960
* 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}}$)
6061
* 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/JsonFormattingTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,11 @@ public void testJsonFieldOrdering()
6969
JsonApprovals.verifyJson(JsonUtils.reorderFields(json1));
7070
JsonApprovals.verifyJson(JsonUtils.reorderFields(json2));
7171
}
72+
@Test
73+
public void testJsonFieldOrderingWithNulls()
74+
{
75+
Approvals.settings().allowMultipleVerifyCallsForThisMethod();
76+
String json1 = "{\"infos\":{\"address\":null,\"phone\":\"my phone\"},\"insurance\":{\"forks\":[14,53,123],\"prices\":[5,8,\"3%\"]}}";
77+
JsonApprovals.verifyJson(json1, true, g -> g.serializeNulls());
78+
}
7279
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"infos": {
3+
"address": null,
4+
"phone": "my phone"
5+
},
6+
"insurance": {
7+
"forks": [
8+
14,
9+
53,
10+
123
11+
],
12+
"prices": [
13+
5,
14+
8,
15+
"3%"
16+
]
17+
}
18+
}

approvaltests-util/src/main/java/com/spun/util/JsonUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,13 @@ private static GsonBuilder addHandlingForDateObjects(GsonBuilder builder)
6666
return builder;
6767
}
6868
public static String reorderFields(String json)
69+
{
70+
return reorderFields(json, g -> g);
71+
}
72+
public static String reorderFields(String json, Function1<GsonBuilder, GsonBuilder> gsonBuilder)
6973
{
7074
JsonObject sortedJsonObject = sortJsonObject(json);
71-
return asJson(sortedJsonObject);
75+
return asJson(sortedJsonObject, gsonBuilder);
7276
}
7377
public static JsonObject sortJsonObject(String json)
7478
{

approvaltests/src/main/java/org/approvaltests/JsonApprovals.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.approvaltests;
22

33
import com.google.gson.GsonBuilder;
4-
import com.spun.util.FormattedException;
54
import com.spun.util.JsonUtils;
65
import org.approvaltests.core.Options;
76
import org.lambda.functions.Function1;
@@ -23,6 +22,16 @@ public static void verifyJson(String json, boolean reorderJson)
2322
{
2423
verifyJson(json, reorderJson, new Options());
2524
}
25+
public static void verifyJson(String json, boolean reorderJson, Function1<GsonBuilder, GsonBuilder> gsonBuilder)
26+
{
27+
verifyJson(json, reorderJson, gsonBuilder, new Options());
28+
}
29+
public static void verifyJson(String json, boolean reorderJson, Function1<GsonBuilder, GsonBuilder> gsonBuilder,
30+
Options options)
31+
{
32+
String formattedJson = reorderJson ? JsonUtils.reorderFields(json, gsonBuilder) : JsonUtils.prettyPrint(json);
33+
Approvals.verify(formattedJson, options.forFile().withExtension(".json"));
34+
}
2635
public static void verifyJson(String json, boolean reorderJson, Options options)
2736
{
2837
String formattedJson = reorderJson ? JsonUtils.reorderFields(json) : JsonUtils.prettyPrint(json);

0 commit comments

Comments
 (0)