Skip to content

Commit 888e815

Browse files
committed
- B JsonUtils.prettyPrint to not override passed-in GsonBuilder, closes #551
1 parent aa8e32e commit 888e815

File tree

5 files changed

+36
-9
lines changed

5 files changed

+36
-9
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +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#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}}$)
54+
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L55-L58) (Object, $\color{#AAA}{\textsf{Options}}$)
55+
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L50-L53) (Object, Function1, $\color{#AAA}{\textsf{Options}}$)
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}}$)
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}}$)
57+
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L37-L41) (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-L36) (String, boolean, Function1, $\color{#AAA}{\textsf{Options}}$)
5959
* 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}}$)
6060
* 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}}$)
6161
* 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}}$)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"name": "value",
3+
"localDate": null
4+
}

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

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

3-
import com.spun.util.Wrapper;
3+
import com.google.gson.GsonBuilder;
44
import org.junit.jupiter.api.Test;
5+
import org.lambda.functions.Function1;
56

67
import java.time.LocalDateTime;
78

@@ -13,6 +14,17 @@ void nullDateTest()
1314
LocalDateWrapper localDateWrapper = new LocalDateWrapper();
1415
JsonApprovals.verifyAsJson(localDateWrapper, g -> g.serializeNulls());
1516
}
17+
@Test
18+
void applesauce()
19+
{
20+
String jsonString = """
21+
{
22+
"name": "value",
23+
"localDate": null
24+
}
25+
""";
26+
JsonApprovals.verifyJson(jsonString, false, GsonBuilder::serializeNulls);
27+
}
1628
private class LocalDateWrapper
1729
{
1830
public LocalDateTime getLocalDate()

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package com.spun.util;
22

3-
import com.google.gson.*;
3+
import com.google.gson.Gson;
4+
import com.google.gson.GsonBuilder;
5+
import com.google.gson.JsonElement;
6+
import com.google.gson.JsonObject;
7+
import com.google.gson.JsonParser;
8+
import com.google.gson.JsonSyntaxException;
9+
import com.google.gson.TypeAdapter;
410
import com.google.gson.stream.JsonReader;
511
import com.google.gson.stream.JsonWriter;
612
import org.lambda.functions.Function1;
713

814
import java.io.IOException;
9-
import java.lang.reflect.Field;
1015
import java.time.Instant;
1116
import java.time.LocalDateTime;
1217
import java.util.Map;
@@ -16,6 +21,10 @@
1621
public class JsonUtils
1722
{
1823
public static String prettyPrint(String json)
24+
{
25+
return prettyPrint(json, g -> g);
26+
}
27+
public static String prettyPrint(String json, Function1<GsonBuilder, GsonBuilder> gsonBuilder)
1928
{
2029
if (!ObjectUtils.isClassPresent("com.google.gson.Gson"))
2130
{
@@ -24,7 +33,7 @@ public static String prettyPrint(String json)
2433
}
2534
try
2635
{
27-
Gson gson = new GsonBuilder().setPrettyPrinting().create();
36+
Gson gson = gsonBuilder.call(new GsonBuilder()).setPrettyPrinting().create();
2837
JsonElement je = JsonParser.parseString(json);
2938
return gson.toJson(je);
3039
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ public static void verifyJson(String json, boolean reorderJson, Function1<GsonBu
2929
public static void verifyJson(String json, boolean reorderJson, Function1<GsonBuilder, GsonBuilder> gsonBuilder,
3030
Options options)
3131
{
32-
String formattedJson = reorderJson ? JsonUtils.reorderFields(json, gsonBuilder) : JsonUtils.prettyPrint(json);
32+
String formattedJson = reorderJson
33+
? JsonUtils.reorderFields(json, gsonBuilder)
34+
: JsonUtils.prettyPrint(json, gsonBuilder);
3335
Approvals.verify(formattedJson, options.forFile().withExtension(".json"));
3436
}
3537
public static void verifyJson(String json, boolean reorderJson, Options options)

0 commit comments

Comments
 (0)