diff --git a/arex-compare-core/pom.xml b/arex-compare-core/pom.xml index 96d5519..e375092 100644 --- a/arex-compare-core/pom.xml +++ b/arex-compare-core/pom.xml @@ -5,7 +5,7 @@ arex-compare-parent com.arextest - 0.2.18 + 0.2.19 4.0.0 diff --git a/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/JSONParse.java b/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/JSONParse.java index 17e985b..6dbc8c3 100644 --- a/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/JSONParse.java +++ b/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/JSONParse.java @@ -34,7 +34,7 @@ public Map, String> getJSONParseResult(Object obj, RulesConfig stringAndCompressParse.setNameToLower(rulesConfig.isNameToLower()); stringAndCompressParse.setPluginJarUrl(rulesConfig.getPluginJarUrl()); stringAndCompressParse.setTransFormConfigMap(rulesConfig.getTransformConfigMap()); - stringAndCompressParse.getJSONParse(obj, obj); + stringAndCompressParse.getJSONParse(obj, obj, null); // Convert field names in JSONObject to lowercase if (rulesConfig.isNameToLower()) { NameConvertUtil.nameConvert(obj); diff --git a/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/StringAndCompressParse.java b/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/StringAndCompressParse.java index de63f1d..46d555b 100644 --- a/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/StringAndCompressParse.java +++ b/arex-compare-core/src/main/java/com/arextest/diff/handler/parse/StringAndCompressParse.java @@ -51,7 +51,7 @@ public void setPluginJarUrl(String pluginJarUrl) { this.pluginJarUrl = pluginJarUrl; } - public void getJSONParse(Object obj, Object preObj) { + public void getJSONParse(Object obj, Object preObj, String currentName) { if (obj == null || obj instanceof NullNode) { return; } @@ -62,7 +62,7 @@ public void getJSONParse(Object obj, Object preObj) { for (String fieldName : names) { currentNode.add(new NodeEntity(nameToLower ? fieldName.toLowerCase() : fieldName, 0)); Object objFieldValue = jsonObject.get(fieldName); - getJSONParse(objFieldValue, obj); + getJSONParse(objFieldValue, obj, fieldName); ListUti.removeLast(currentNode); } } else if (obj instanceof ArrayNode) { @@ -70,7 +70,7 @@ public void getJSONParse(Object obj, Object preObj) { for (int i = 0; i < objArray.size(); i++) { currentNode.add(new NodeEntity(null, i)); Object element = objArray.get(i); - getJSONParse(element, obj); + getJSONParse(element, obj, String.valueOf(i)); ListUti.removeLast(currentNode); } @@ -96,10 +96,9 @@ public void getJSONParse(Object obj, Object preObj) { return; } if (Objects.equals(objectBooleanPair.getValue(), Boolean.TRUE)) { - getJSONParse(objectBooleanPair.getKey(), preObj); + getJSONParse(objectBooleanPair.getKey(), preObj, null); } - String currentName = getCurrentName(currentNode); if (preObj instanceof ObjectNode) { ((ObjectNode) preObj).set(currentName, objectBooleanPair.getKey()); original.put(new ArrayList<>(currentNode), value); diff --git a/arex-compare-core/src/main/java/com/arextest/diff/utils/ListUti.java b/arex-compare-core/src/main/java/com/arextest/diff/utils/ListUti.java index 4ebea02..cef959c 100644 --- a/arex-compare-core/src/main/java/com/arextest/diff/utils/ListUti.java +++ b/arex-compare-core/src/main/java/com/arextest/diff/utils/ListUti.java @@ -56,13 +56,21 @@ public static boolean stringListEqualsOnWildcard(List listA, List convertToStringList(List list) { + return convertToStringList(list,false); + } + + public static List convertToStringList(List list, boolean ignoreCase) { if (list == null || list.size() == 0) { return Collections.emptyList(); } List nodes = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { if (list.get(i).getNodeName() != null) { - nodes.add(list.get(i).getNodeName()); + if (ignoreCase) { + nodes.add(list.get(i).getNodeName().toLowerCase()); + } else { + nodes.add(list.get(i).getNodeName()); + } } } return nodes; diff --git a/arex-compare-core/src/test/java/com/arextest/diff/sdk/CompareSDKTest.java b/arex-compare-core/src/test/java/com/arextest/diff/sdk/CompareSDKTest.java index 3011302..9df6d42 100644 --- a/arex-compare-core/src/test/java/com/arextest/diff/sdk/CompareSDKTest.java +++ b/arex-compare-core/src/test/java/com/arextest/diff/sdk/CompareSDKTest.java @@ -9,6 +9,8 @@ import com.arextest.diff.model.script.ScriptCompareConfig; import com.arextest.diff.model.script.ScriptCompareConfig.ScriptMethod; import com.arextest.diff.model.script.ScriptContentInfo; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -1025,7 +1027,8 @@ public void testScriptCompare3() { CompareOptions compareOptions = new CompareOptions(); compareOptions.putScriptCompareConfig( - new ScriptCompareConfig(Arrays.asList("score"), new ScriptMethod("func_67356dbc7ac2aa763be9f8af", "")) + new ScriptCompareConfig(Arrays.asList("score"), + new ScriptMethod("func_67356dbc7ac2aa763be9f8af", "")) ); String baseMsg = "{\n" @@ -1097,4 +1100,45 @@ public void testScriptValueMissing() { Assertions.assertEquals(2, compare.getLogs().size()); } + @Test + public void testScriptCompare4() throws Exception { + CompareSDK compareSDK = new CompareSDK(); + compareSDK.getGlobalOptions() + .putNameToLower(true) + .putNullEqualsEmpty(true) + .putPluginJarUrl("./lib/arex-compare-sdk-plugin-0.1.0-jar-with-dependencies.jar"); + + String baseMsg = "{\"UPPERCASE\":\"{\\\"customerCurrency\\\":\\\"CNY\\\"}\",\"otherNode\":\"otherNode1\"}"; + String testMsg = "{\"UPPERCASE\":\"{\\\"customerCurrency\\\":\\\"USD\\\"}\",\"otherNode\":\"otherNode2\"}"; + + CompareOptions options = new CompareOptions(); + + CompareResult result = compareSDK.compare(baseMsg, testMsg, options); + Assertions.assertEquals(2, result.getLogs().size()); + Assertions.assertEquals(2, result.getLogs().get(0).getPathPair().getLeftUnmatchedPath().size()); + Assertions.assertEquals(2, + result.getLogs().get(0).getPathPair().getRightUnmatchedPath().size()); + Assertions.assertEquals("CNY", result.getLogs().get(0).getBaseValue()); + Assertions.assertEquals("USD", result.getLogs().get(0).getTestValue()); + } + + + @Test + public void testScriptCompare5() throws Exception { + CompareSDK compareSDK = new CompareSDK(); + compareSDK.getGlobalOptions() + .putNameToLower(true) + .putNullEqualsEmpty(true) + .putPluginJarUrl("./lib/arex-compare-sdk-plugin-0.1.0-jar-with-dependencies.jar"); + + String baseMsg = "{\"root\":{\"UPPERCASE\":\"{\\\"customerCurrency\\\":\\\"CNY\\\"}\",\"otherNode\":\"otherNode1\"}}"; + String testMsg = "{\"root\":{\"UPPERCASE\":\"{\\\"customerCurrency\\\":\\\"USD\\\"}\",\"otherNode\":\"otherNode2\"}}"; + + CompareOptions options = new CompareOptions(); + + CompareResult result = compareSDK.compare(baseMsg, testMsg, options); + Assertions.assertEquals(2, result.getParseNodePaths().get("root.uppercase").size()); + Assertions.assertEquals("{\"customerCurrency\":\"CNY\"}", result.getParseNodePaths().get("root.uppercase").get(0)); + } + } \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6db61ed..3a7b27e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.arextest arex-compare-parent pom - 0.2.18 + 0.2.19 arex-compare-extension arex-compare-core