Merge branch '5.2.x'
This commit is contained in:
commit
d8554c498c
|
@ -26,6 +26,7 @@ import org.hamcrest.MatcherAssert;
|
|||
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
|
@ -108,10 +109,18 @@ public class JsonPathExpectationsHelper {
|
|||
}
|
||||
actualValue = actualValueList.get(0);
|
||||
}
|
||||
else if (actualValue != null && expectedValue != null) {
|
||||
if (!actualValue.getClass().equals(expectedValue.getClass())) {
|
||||
else if (actualValue != null && expectedValue != null &&
|
||||
!actualValue.getClass().equals(expectedValue.getClass())) {
|
||||
try {
|
||||
actualValue = evaluateJsonPath(content, expectedValue.getClass());
|
||||
}
|
||||
catch (AssertionError error) {
|
||||
String message = String.format(
|
||||
"At JSON path \"%s\", value <%s> of type <%s> cannot be converted to type <%s>",
|
||||
this.expression, actualValue, ClassUtils.getDescriptiveType(actualValue),
|
||||
ClassUtils.getDescriptiveType(expectedValue));
|
||||
throw new AssertionError(message, error.getCause());
|
||||
}
|
||||
}
|
||||
AssertionErrors.assertEquals("JSON path \"" + this.expression + "\"", expectedValue, actualValue);
|
||||
}
|
||||
|
@ -298,7 +307,7 @@ public class JsonPathExpectationsHelper {
|
|||
|
||||
/**
|
||||
* Variant of {@link #evaluateJsonPath(String)} with a target type.
|
||||
* This can be useful for matching numbers reliably for example coercing an
|
||||
* <p>This can be useful for matching numbers reliably for example coercing an
|
||||
* integer into a double.
|
||||
* @param content the content to evaluate against
|
||||
* @return the result of the evaluation
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2004-2019 the original author or authors.
|
||||
* Copyright 2004-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -67,12 +67,12 @@ class JsonPathExpectationsHelperTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void existsForIndefinatePathWithResults() throws Exception {
|
||||
void existsForIndefinitePathWithResults() throws Exception {
|
||||
new JsonPathExpectationsHelper("$.familyMembers[?(@.name == 'Bart')]").exists(SIMPSONS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void existsForIndefinatePathWithEmptyResults() throws Exception {
|
||||
void existsForIndefinitePathWithEmptyResults() throws Exception {
|
||||
String expression = "$.familyMembers[?(@.name == 'Dilbert')]";
|
||||
assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
|
||||
new JsonPathExpectationsHelper(expression).exists(SIMPSONS))
|
||||
|
@ -101,7 +101,7 @@ class JsonPathExpectationsHelperTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void doesNotExistForIndefinatePathWithResults() throws Exception {
|
||||
void doesNotExistForIndefinitePathWithResults() throws Exception {
|
||||
String expression = "$.familyMembers[?(@.name == 'Bart')]";
|
||||
assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
|
||||
new JsonPathExpectationsHelper(expression).doesNotExist(SIMPSONS))
|
||||
|
@ -109,7 +109,7 @@ class JsonPathExpectationsHelperTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void doesNotExistForIndefinatePathWithEmptyResults() throws Exception {
|
||||
void doesNotExistForIndefinitePathWithEmptyResults() throws Exception {
|
||||
new JsonPathExpectationsHelper("$.familyMembers[?(@.name == 'Dilbert')]").doesNotExist(SIMPSONS);
|
||||
}
|
||||
|
||||
|
@ -129,12 +129,12 @@ class JsonPathExpectationsHelperTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void assertValueIsEmptyForIndefinatePathWithEmptyResults() throws Exception {
|
||||
void assertValueIsEmptyForIndefinitePathWithEmptyResults() throws Exception {
|
||||
new JsonPathExpectationsHelper("$.familyMembers[?(@.name == 'Dilbert')]").assertValueIsEmpty(SIMPSONS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void assertValueIsEmptyForIndefinatePathWithResults() throws Exception {
|
||||
void assertValueIsEmptyForIndefinitePathWithResults() throws Exception {
|
||||
String expression = "$.familyMembers[?(@.name == 'Bart')]";
|
||||
assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
|
||||
new JsonPathExpectationsHelper(expression).assertValueIsEmpty(SIMPSONS))
|
||||
|
@ -175,12 +175,12 @@ class JsonPathExpectationsHelperTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void assertValueIsNotEmptyForIndefinatePathWithResults() throws Exception {
|
||||
void assertValueIsNotEmptyForIndefinitePathWithResults() throws Exception {
|
||||
new JsonPathExpectationsHelper("$.familyMembers[?(@.name == 'Bart')]").assertValueIsNotEmpty(SIMPSONS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void assertValueIsNotEmptyForIndefinatePathWithEmptyResults() throws Exception {
|
||||
void assertValueIsNotEmptyForIndefinitePathWithEmptyResults() throws Exception {
|
||||
String expression = "$.familyMembers[?(@.name == 'Dilbert')]";
|
||||
assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
|
||||
new JsonPathExpectationsHelper(expression).assertValueIsNotEmpty(SIMPSONS))
|
||||
|
@ -222,12 +222,12 @@ class JsonPathExpectationsHelperTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void hasJsonPathForIndefinatePathWithResults() {
|
||||
void hasJsonPathForIndefinitePathWithResults() {
|
||||
new JsonPathExpectationsHelper("$.familyMembers[?(@.name == 'Bart')]").hasJsonPath(SIMPSONS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void hasJsonPathForIndefinatePathWithEmptyResults() {
|
||||
void hasJsonPathForIndefinitePathWithEmptyResults() {
|
||||
String expression = "$.familyMembers[?(@.name == 'Dilbert')]";
|
||||
assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
|
||||
new JsonPathExpectationsHelper(expression).hasJsonPath(SIMPSONS))
|
||||
|
@ -246,12 +246,12 @@ class JsonPathExpectationsHelperTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void doesNotHaveJsonPathForIndefinatePathWithEmptyResults() {
|
||||
void doesNotHaveJsonPathForIndefinitePathWithEmptyResults() {
|
||||
new JsonPathExpectationsHelper("$.familyMembers[?(@.name == 'Dilbert')]").doesNotHaveJsonPath(SIMPSONS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void doesNotHaveEmptyPathForIndefinatePathWithResults() {
|
||||
void doesNotHaveEmptyPathForIndefinitePathWithResults() {
|
||||
String expression = "$.familyMembers[?(@.name == 'Bart')]";
|
||||
assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
|
||||
new JsonPathExpectationsHelper(expression).doesNotHaveJsonPath(SIMPSONS))
|
||||
|
|
|
@ -64,9 +64,17 @@ public class JsonPathResultMatchersTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void valueWithMismatch() throws Exception {
|
||||
assertThatExceptionOfType(AssertionError.class).isThrownBy(() ->
|
||||
new JsonPathResultMatchers("$.str").value("bogus").match(stubMvcResult));
|
||||
public void valueWithValueMismatch() throws Exception {
|
||||
assertThatExceptionOfType(AssertionError.class)
|
||||
.isThrownBy(() -> new JsonPathResultMatchers("$.str").value("bogus").match(stubMvcResult))
|
||||
.withMessage("JSON path \"$.str\" expected:<bogus> but was:<foo>");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void valueWithTypeMismatch() throws Exception {
|
||||
assertThatExceptionOfType(AssertionError.class)
|
||||
.isThrownBy(() -> new JsonPathResultMatchers("$.str").value("bogus".getBytes()).match(stubMvcResult))
|
||||
.withMessage("At JSON path \"$.str\", value <foo> of type <java.lang.String> cannot be converted to type <byte[]>");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue