Skip to content

Commit 265a484

Browse files
committed
! F Added reorder field option to JsonApprovals.verifyJson
1 parent 3636eba commit 265a484

File tree

4 files changed

+29
-25
lines changed

4 files changed

+29
-25
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@
5050
* CombinationApprovals. [verifyBestCoveringPairs ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/combinations/CombinationApprovals.java#L290-L293) (Function7,Object[],Object[],Object[],Object[],Object[],Object[],Object[])
5151
* CombinationApprovals. [verifyBestCoveringPairs ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/combinations/CombinationApprovals.java#L308-L311) (Function8,Object[],Object[],Object[],Object[],Object[],Object[],Object[],Object[])
5252
* CombinationApprovals. [verifyBestCoveringPairs ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/combinations/CombinationApprovals.java#L326-L329) (Function9,Object[],Object[],Object[],Object[],Object[],Object[],Object[],Object[],Object[])
53-
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L26-L29) (Object)
54-
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L30-L33) (Object,Function1)
53+
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L35-L38) (Object)
54+
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L39-L42) (Object,Function1)
5555
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L18-L21) (String)
56+
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L26-L29) (String,boolean)
5657
* JsonJacksonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonJacksonApprovals.java#L10-L13) (Object)
5758
* VelocityApprovals. [verify ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/velocity/VelocityApprovals.java#L16-L19) (ContextAware)

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,8 @@ public void testJsonFieldOrdering()
6464
Approvals.settings().allowMultipleVerifyCallsForThisMethod();
6565
String json1 = "{\"infos\":{\"address\":\"my address\",\"phone\":\"my phone\"},\"insurance\":{\"forks\":[14,53,123],\"prices\":[5,8,\"3%\"]}}";
6666
String json2 = "{\"insurance\":{\"forks\":[14,53,123],\"prices\":[5,8,\"3%\"]},\"infos\":{\"phone\":\"my phone\",\"address\":\"my address\"}}";
67-
// JsonApprovals.verifyJson(json1);
68-
// JsonApprovals.verifyJson(json2);
69-
//
70-
// JsonApprovals.verifyOrderedJson(json1);
71-
// JsonApprovals.verifyOrderedJson(json2);
72-
//
73-
// JsonApprovals.verifyJson(json1, true);
74-
// JsonApprovals.verifyJson(json2, true);
75-
67+
JsonApprovals.verifyJson(json1, true);
68+
JsonApprovals.verifyJson(json2, true);
7669
JsonApprovals.verifyJson(JsonUtils.reorderFields(json1));
7770
JsonApprovals.verifyJson(JsonUtils.reorderFields(json2));
7871
}

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

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,34 +65,35 @@ private static GsonBuilder addHandlingForDateObjects(GsonBuilder builder)
6565
builder = builder.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeAdapter());
6666
return builder;
6767
}
68-
69-
public static String reorderFields(String json) {
68+
public static String reorderFields(String json)
69+
{
7070
JsonObject sortedJsonObject = sortJsonObject(json);
7171
return asJson(sortedJsonObject);
7272
}
73-
74-
public static JsonObject sortJsonObject(String json) {
73+
public static JsonObject sortJsonObject(String json)
74+
{
7575
JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject();
7676
return sortJsonObjectFields(jsonObject);
7777
}
78-
79-
public static JsonObject sortJsonObjectFields(JsonObject jsonObject) {
78+
public static JsonObject sortJsonObjectFields(JsonObject jsonObject)
79+
{
8080
JsonObject sortedJsonObject = new JsonObject();
8181
Map<String, JsonElement> sortedFirstLevelFields = jsonObject.entrySet().stream()
82-
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b, TreeMap::new));
83-
84-
for (Map.Entry<String, JsonElement> entry : sortedFirstLevelFields.entrySet()) {
82+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b, TreeMap::new));
83+
for (Map.Entry<String, JsonElement> entry : sortedFirstLevelFields.entrySet())
84+
{
8585
JsonElement element = entry.getValue();
86-
if (element.isJsonObject()) {
86+
if (element.isJsonObject())
87+
{
8788
sortedJsonObject.add(entry.getKey(), sortJsonObjectFields(element.getAsJsonObject()));
88-
} else {
89+
}
90+
else
91+
{
8992
sortedJsonObject.add(entry.getKey(), element);
9093
}
9194
}
92-
9395
return sortedJsonObject;
9496
}
95-
9697
public static class InstantAdapter extends TypeAdapter<Instant>
9798
{
9899
@Override

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,16 @@ public static void verifyJson(String json)
1717
}
1818
public static void verifyJson(String json, Options options)
1919
{
20-
Approvals.verify(JsonUtils.prettyPrint(json), options.forFile().withExtension(".json"));
20+
verifyJson(json, false, options);
21+
}
22+
public static void verifyJson(String json, boolean reorderJson)
23+
{
24+
verifyJson(json, reorderJson, new Options());
25+
}
26+
public static void verifyJson(String json, boolean reorderJson, Options options)
27+
{
28+
String formattedJson = reorderJson ? JsonUtils.reorderFields(json) : JsonUtils.prettyPrint(json);
29+
Approvals.verify(formattedJson, options.forFile().withExtension(".json"));
2130
}
2231
public static void verifyAsJson(Object o)
2332
{

0 commit comments

Comments
 (0)