Skip to content

Commit

Permalink
Merge b1e580e into 60947b7
Browse files Browse the repository at this point in the history
  • Loading branch information
fslevoaca-ionos committed Jul 22, 2022
2 parents 60947b7 + b1e580e commit c13663d
Show file tree
Hide file tree
Showing 45 changed files with 125 additions and 100 deletions.
5 changes: 4 additions & 1 deletion Changelog.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Changelog

## 3.1-SNAPSHOT
## 4.0-SNAPSHOT
Refactor base package name (io.json.compare)
Refactor JSON paths from assertion error message
Enhanced failed JSON conversion error message

## 3.0
Renamed JSONCompare.assertEquals() and .assertNotEquals() to .assertMatches() and .assertNotMatches()
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ JSONCompare by default matches JSON fields and values using regular expressions.
If you have unintentional regex characters inside either expected values or expected fields, then you can quote them:

```javascript
String expected = "{\"a\":\"\\Qd+\\E\"}";
String expected = "{\"a\":\"\\\\Qd+\\\\E\"}";
String actual = "{\"a\":\"d+\"}";
JSONCompare.assertMatches(expected, actual);
```
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

<groupId>com.github.fslev</groupId>
<artifactId>json-compare</artifactId>
<version>3.1-SNAPSHOT</version>
<version>4.0-SNAPSHOT</version>

<dependencies>
<!--jackson-->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ro.skyah.comparator;
package io.json.compare;

public enum CompareMode {
JSON_OBJECT_NON_EXTENSIBLE,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ro.skyah.comparator;
package io.json.compare;

import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package ro.skyah.comparator;
package io.json.compare;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import ro.skyah.comparator.matcher.JsonMatcher;
import ro.skyah.comparator.matcher.MatcherException;
import ro.skyah.util.MessageUtil;
import io.json.compare.matcher.JsonMatcher;
import io.json.compare.matcher.MatcherException;
import io.json.compare.util.MessageUtil;

import java.io.IOException;
import java.util.Set;
Expand Down Expand Up @@ -103,13 +103,11 @@ public static String prettyPrint(JsonNode jsonNode) {
}

private static JsonNode toJson(Object obj) {
JsonNode jsonNode = null;
try {
jsonNode = obj instanceof JsonNode ? (JsonNode) obj :
return obj instanceof JsonNode ? (JsonNode) obj :
(obj instanceof String) ? MAPPER.readTree(obj.toString()) : MAPPER.convertValue(obj, JsonNode.class);
} catch (IOException e) {
fail(String.format("Cannot convert to JSON:\n%s", MessageUtil.cropL(obj.toString())));
throw new RuntimeException(String.format("Invalid JSON\n%s\n", e));
}
return jsonNode;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ro.skyah.comparator;
package io.json.compare;

public interface JsonComparator {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package ro.skyah.comparator.matcher;
package io.json.compare.matcher;

import com.fasterxml.jackson.databind.JsonNode;
import ro.skyah.comparator.CompareMode;
import ro.skyah.comparator.DefaultJsonComparator;
import ro.skyah.comparator.JsonComparator;
import io.json.compare.CompareMode;
import io.json.compare.DefaultJsonComparator;
import io.json.compare.JsonComparator;

import java.util.HashSet;
import java.util.Iterator;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package ro.skyah.comparator.matcher;
package io.json.compare.matcher;

import com.fasterxml.jackson.databind.JsonNode;
import ro.skyah.comparator.CompareMode;
import ro.skyah.comparator.JSONCompare;
import ro.skyah.comparator.JsonComparator;
import ro.skyah.util.MessageUtil;
import io.json.compare.CompareMode;
import io.json.compare.JSONCompare;
import io.json.compare.JsonComparator;
import io.json.compare.util.MessageUtil;

import java.util.HashSet;
import java.util.Set;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package ro.skyah.comparator.matcher;
package io.json.compare.matcher;

import com.fasterxml.jackson.databind.JsonNode;
import ro.skyah.comparator.CompareMode;
import ro.skyah.comparator.JsonComparator;
import io.json.compare.CompareMode;
import io.json.compare.JsonComparator;

import java.util.Set;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package ro.skyah.comparator.matcher;
package io.json.compare.matcher;

import com.fasterxml.jackson.databind.JsonNode;
import com.jayway.jsonpath.PathNotFoundException;
import ro.skyah.comparator.CompareMode;
import ro.skyah.comparator.JsonComparator;
import io.json.compare.CompareMode;
import io.json.compare.JsonComparator;

import java.util.*;

Expand Down Expand Up @@ -34,7 +34,7 @@ public void match() throws MatcherException {
case MATCH:
if (!jsonPathExpression.isPresent()) {
if (candidateEntries.isEmpty()) {
throw new MatcherException(String.format("Field %s was not found or cannot be matched", expectedField));
throw new MatcherException(String.format("Field '%s' was not found or cannot be matched", expectedField));
}
matchWithCandidateEntries(expectedSanitizedField, expectedValue, candidateEntries);
} else {
Expand All @@ -49,7 +49,7 @@ public void match() throws MatcherException {
case DO_NOT_MATCH:
if (!jsonPathExpression.isPresent()) {
if (!candidateEntries.isEmpty()) {
throw new MatcherException(String.format("Field %s was found", expectedField));
throw new MatcherException(String.format("Field '%s' was found", expectedField));
}
} else {
try {
Expand Down Expand Up @@ -83,7 +83,7 @@ private void matchWithCandidateEntries(String expectedKey, JsonNode expectedValu
if (it.hasNext()) {
continue;
} else {
throw new MatcherException(String.format("%s <- \"%s\"", e.getMessage(), expectedKey));
throw new MatcherException(String.format("%s <- %s", e.getMessage(), expectedKey));
}
}
matchedFieldNames.add(candidateField);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ro.skyah.comparator.matcher;
package io.json.compare.matcher;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
Expand All @@ -7,8 +7,8 @@
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.ParseContext;
import com.jayway.jsonpath.spi.json.JacksonJsonNodeJsonProvider;
import ro.skyah.comparator.CompareMode;
import ro.skyah.comparator.JsonComparator;
import io.json.compare.CompareMode;
import io.json.compare.JsonComparator;

import java.util.Set;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package ro.skyah.comparator.matcher;
package io.json.compare.matcher;

import com.fasterxml.jackson.databind.JsonNode;
import ro.skyah.comparator.CompareMode;
import ro.skyah.comparator.JsonComparator;
import io.json.compare.CompareMode;
import io.json.compare.JsonComparator;

import java.util.Set;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ro.skyah.comparator.matcher;
package io.json.compare.matcher;

public class MatcherException extends Exception {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ro.skyah.util;
package io.json.compare.util;

public final class MessageUtil {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

public class JSONArrayCompareTests {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

public class JSONBooleanCompareTests {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.CompareMode;
import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -72,7 +74,7 @@ public void checkNullMessageFromJSONObjectFailedCompare() {
try {
JSONCompare.assertMatches(expected, actual, new HashSet<>(Arrays.asList(CompareMode.JSON_OBJECT_NON_EXTENSIBLE)));
} catch (AssertionError e) {
assertTrue(e.getMessage().contains("Field a was not found"));
assertTrue(e.getMessage().contains("Field 'a' was not found"));
}
}

Expand Down Expand Up @@ -102,7 +104,7 @@ public void checkMessageFromFailedMatchingBetweenHighDepthJsons() {
try {
JSONCompare.assertMatches(expected, actual, new HashSet<>(Arrays.asList(CompareMode.JSON_OBJECT_NON_EXTENSIBLE)));
} catch (AssertionError e) {
System.out.println(e);
assertTrue(e.getMessage().contains("Field 'version' was not found or cannot be matched <- @"));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.CompareMode;
import io.json.compare.JSONCompare;
import io.json.compare.JsonComparator;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.CompareMode;
import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
Expand Down Expand Up @@ -37,12 +39,12 @@ public void checkJsonConversionErrorMessage() {
String expected = "{\"a\":1,\"b\":[4,2,d]}";
Map<String, Object> actual = new HashMap<>();
actual.put("a", 1);
AssertionError e = assertThrows(AssertionError.class, () -> JSONCompare.assertMatches(expected, actual));
assertTrue(e.getMessage().contains("Cannot convert to JSON:"));
RuntimeException e = assertThrows(RuntimeException.class, () -> JSONCompare.assertMatches(expected, actual));
assertTrue(e.getMessage().contains("Invalid JSON"));
assertTrue(e.getMessage().contains(expected));
AssertionError e1 = assertThrows(AssertionError.class, () -> JSONCompare.assertMatches("{\"a\":1}", "{\"a:1}"));
assertTrue(e1.getMessage().contains("Cannot convert to JSON:"));
AssertionError e2 = assertThrows(AssertionError.class, () -> JSONCompare.assertNotMatches("{\"a\":1}", "{\"a:2}"));
assertTrue(e2.getMessage().contains("Cannot convert to JSON:"));
RuntimeException e1 = assertThrows(RuntimeException.class, () -> JSONCompare.assertMatches("{\"a\":1}", "{\"a:1}"));
assertTrue(e1.getMessage().contains("Invalid JSON"));
RuntimeException e2 = assertThrows(RuntimeException.class, () -> JSONCompare.assertNotMatches("{\"a\":1}", "{\"a:2}"));
assertTrue(e2.getMessage().contains("Invalid JSON"));
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

public class JSONEmptyValuesCompareTests {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

import java.io.ByteArrayOutputStream;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

public class JSONMixedCompareTests {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

public class JSONNullCompareTests {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

public class JSONObjectCompareTests {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.CompareMode;
import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
Expand Down Expand Up @@ -194,7 +196,7 @@ public void checkInvalidOrNotFoundJsonPathErrorMessage() {
try {
JSONCompare.assertMatches(expected, actual);
} catch (AssertionError e) {
assertTrue(e.getMessage().contains("No results for path: $['idontexist'] <- json path ('$.idontexist') <- \"a11\" <- \"a1\" <- \"a\""));
assertTrue(e.getMessage().contains("No results for path: $['idontexist'] <- json path ('$.idontexist') <- a11 <- a1 <- a"));
return;
}
fail("No error thrown");
Expand All @@ -214,7 +216,7 @@ public void checkJsonPathAssertionErrorMessage() {
try {
JSONCompare.assertMatches(expected, actual);
} catch (AssertionError e) {
assertTrue(e.getMessage().contains("But found: \"lorem\" <- json path ('$.a') <- \"a11\" <- \"a1\" <- \"a\""));
assertTrue(e.getMessage().contains("But found: \"lorem\" <- json path ('$.a') <- a11 <- a1 <- a"));
return;
}
fail("No error thrown");
Expand Down Expand Up @@ -467,7 +469,7 @@ public void matchJsonObjectWithDifferentJsonPaths_negative() {
" \"isbn\": \"0-553-21311-3\",\n" +
" \"price\": 8.99\n" +
" },\n" +
"!.*," +
"\"!.*\"" +
"]}";
assertThrows(AssertionError.class, () -> JSONCompare.assertMatches(expected1, actual));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

public class JSONRegexCompareTests {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ro.skyah.comparator;
package io.json.compare.matcher;

import io.json.compare.JSONCompare;
import org.junit.jupiter.api.Test;

public class JSONUseCaseCompareTests {
Expand Down
Loading

0 comments on commit c13663d

Please sign in to comment.