diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlIdentifierParameterSourceUnitTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlIdentifierParameterSourceUnitTests.java index f9ccc2673..b7b5430a5 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlIdentifierParameterSourceUnitTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlIdentifierParameterSourceUnitTests.java @@ -97,11 +97,10 @@ public class SqlIdentifierParameterSourceUnitTests { parameters2.addValue(SqlIdentifier.unquoted("key3"), 222); parameters.addAll(parameters2); - String[] allKeys = parameters.getParameterNames(); - Arrays.sort(allKeys); + assertSoftly(softly -> { - softly.assertThat(allKeys).isEqualTo(new String[] { "key1", "key2", "key3" }); + softly.assertThat(parameters.getParameterNames()).containsExactlyInAnyOrder("key1", "key2", "key3"); softly.assertThat(parameters.getValue("key1")).isEqualTo(111); softly.assertThat(parameters.hasValue("key1")).isTrue(); softly.assertThat(parameters.getSqlType("key1")).isEqualTo(11); diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java index f15f05224..b0f5bf4a0 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java @@ -589,24 +589,18 @@ public class PartTreeJdbcQueryUnitTests { new Object[] { new Address("Hello", "World") }); ParametrizedQuery query = jdbcQuery.createQuery(accessor, returnedType); - String expectedSql = BASE_SELECT + " WHERE (" + TABLE + ".\"USER_STREET\" = :user_street AND " + TABLE - + ".\"USER_CITY\" = :user_city)"; String actualSql = query.getQuery(); - assertThat(compareSqlStr(expectedSql, actualSql)).isTrue(); + assertThat(actualSql) // + .startsWith(BASE_SELECT + " WHERE (" + TABLE + ".\"USER_") // + .endsWith(")") // + .contains(TABLE + ".\"USER_STREET\" = :user_street", // + " AND ", // + TABLE + ".\"USER_CITY\" = :user_city"); assertThat(query.getParameterSource().getValue("user_street")).isEqualTo("Hello"); assertThat(query.getParameterSource().getValue("user_city")).isEqualTo("World"); } - private boolean compareSqlStr(String expectedSql, String actualSql) { - String[] expected = expectedSql.split("WHERE"); - String[] actual = actualSql.split("WHERE"); - if (!expected[0].equals(actual[0])) return false; - expected[1] = expected[1].trim().substring(1, expected[1].length() - 2); - String[] flakyParts = expected[1].split("AND"); - return actual[1].contains(flakyParts[0]) && actual[1].contains(flakyParts[1]); - } - @Test // DATAJDBC-318 public void createsQueryByEmbeddedProperty() throws Exception { diff --git a/spring-data-relational/src/test/java/org/springframework/data/relational/repository/query/RelationalExampleMapperTests.java b/spring-data-relational/src/test/java/org/springframework/data/relational/repository/query/RelationalExampleMapperTests.java index 069fe60a5..3b080ed11 100644 --- a/spring-data-relational/src/test/java/org/springframework/data/relational/repository/query/RelationalExampleMapperTests.java +++ b/spring-data-relational/src/test/java/org/springframework/data/relational/repository/query/RelationalExampleMapperTests.java @@ -25,15 +25,7 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; import java.util.Objects; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collector; -import java.util.stream.Collectors; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -41,7 +33,6 @@ import org.springframework.data.annotation.Id; import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher; import org.springframework.data.relational.core.mapping.RelationalMappingContext; -import org.springframework.data.relational.core.query.CriteriaDefinition; import org.springframework.data.relational.core.query.Query; /** @@ -98,9 +89,10 @@ public class RelationalExampleMapperTests { Example example = Example.of(person); Query query = exampleMapper.getMappedExample(example); - String actual = query.getCriteria().map(Object::toString).get(); - String expected = "(firstname = 'Frodo') AND (lastname = 'Baggins')"; - assertThat(compareStrWithFlakiness(expected, actual, "AND")).isTrue(); + assertThat(query.getCriteria().map(Object::toString).get()) // + .contains("(firstname = 'Frodo')", // + " AND ", // + "(lastname = 'Baggins')"); } @Test // GH-929 @@ -130,9 +122,10 @@ public class RelationalExampleMapperTests { Example example = Example.of(person, matcher); Query query = exampleMapper.getMappedExample(example); - String actual = query.getCriteria().map(Object::toString).get(); - String expected = "(firstname IS NULL OR firstname = 'Bilbo') AND (lastname IS NULL OR lastname = 'Baggins')"; - assertThat(compareStrWithFlakiness(expected, actual, "AND")).isTrue(); + assertThat(query.getCriteria().map(Object::toString).get()) // + .contains("(firstname IS NULL OR firstname = 'Bilbo')", // + " AND ", // + "(lastname IS NULL OR lastname = 'Baggins')"); } @Test // GH-929 @@ -373,9 +366,10 @@ public class RelationalExampleMapperTests { Example example = Example.of(person, matcher); Query query = exampleMapper.getMappedExample(example); - String actual = query.getCriteria().map(Object::toString).get(); - String expected = "(firstname = 'Frodo') OR (lastname = 'Baggins')"; - assertThat(compareStrWithFlakiness(expected, actual, "OR")).isTrue(); + assertThat(query.getCriteria().map(Object::toString).get()) // + .contains("(firstname = 'Frodo')", // + " OR ", // + "(lastname = 'Baggins')"); } @Test // GH-929 @@ -388,9 +382,11 @@ public class RelationalExampleMapperTests { Example example = Example.of(person); Query query = exampleMapper.getMappedExample(example); - String actual = query.getCriteria().map(Object::toString).get(); - String expected = "(firstname = 'Frodo') AND (secret = 'I have the ring!')"; - assertThat(compareStrWithFlakiness(expected, actual, "AND")).isTrue(); + + assertThat(query.getCriteria().map(Object::toString).get()) // + .contains("(firstname = 'Frodo')", // + " AND ", // + "(secret = 'I have the ring!')"); } @Test // GH-929 @@ -418,19 +414,12 @@ public class RelationalExampleMapperTests { Example example = Example.of(person, matcher); Query query = exampleMapper.getMappedExample(example); - String actual = query.getCriteria().map(Object::toString).get(); - String expected = "(firstname = 'FRODO') AND (lastname = 'baggins') AND (secret = 'I have the ring!')"; - assertThat(compareStrWithFlakiness(expected, actual, "AND")).isTrue(); - } - private boolean compareStrWithFlakiness(String expected, String actual, String regex) { - String[] flakyParts = expected.split(regex); - for (String part : flakyParts) { - if (!actual.contains(part)) { - return false; - } - } - return true; + assertThat(query.getCriteria().map(Object::toString).get()) // + .contains("(firstname = 'FRODO')", // + " AND ", // + "(lastname = 'baggins')", // + "(secret = 'I have the ring!')"); } @Data