From 0169af2f389b5b998c9dc47c8bc22b3515f70a5e Mon Sep 17 00:00:00 2001 From: Mario Ellebrecht Date: Fri, 17 Nov 2023 10:01:09 +0100 Subject: [PATCH] Support ResultSummaries with Notifications with no InputPosition reported by the driver. (#2822) --- .../data/neo4j/core/ResultSummaries.java | 3 ++- .../data/neo4j/core/ResultSummariesTest.java | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/springframework/data/neo4j/core/ResultSummaries.java b/src/main/java/org/springframework/data/neo4j/core/ResultSummaries.java index 5e39fa6af..3705a41d4 100644 --- a/src/main/java/org/springframework/data/neo4j/core/ResultSummaries.java +++ b/src/main/java/org/springframework/data/neo4j/core/ResultSummaries.java @@ -76,13 +76,14 @@ final class ResultSummaries { static String format(Notification notification, String forQuery) { InputPosition position = notification.position(); + boolean hasPosition = position != null; StringBuilder queryHint = new StringBuilder(); String[] lines = forQuery.split("(\r\n|\n)"); for (int i = 0; i < lines.length; i++) { String line = lines[i]; queryHint.append("\t").append(line).append(LINE_SEPARATOR); - if (i + 1 == position.line()) { + if (hasPosition && i + 1 == position.line()) { queryHint.append("\t").append(Stream.generate(() -> " ").limit(position.column() - 1) .collect(Collectors.joining())).append("^").append(System.lineSeparator()); } diff --git a/src/test/java/org/springframework/data/neo4j/core/ResultSummariesTest.java b/src/test/java/org/springframework/data/neo4j/core/ResultSummariesTest.java index 63d901677..3808a3bd7 100644 --- a/src/test/java/org/springframework/data/neo4j/core/ResultSummariesTest.java +++ b/src/test/java/org/springframework/data/neo4j/core/ResultSummariesTest.java @@ -54,17 +54,24 @@ class ResultSummariesTest { + "\tmatch (n) " + LINE_SEPARATOR + "\t- [r:FOO*] -> (m) " + LINE_SEPARATOR + "\t^" + LINE_SEPARATOR - + "\tRETURN r" + LINE_SEPARATOR) + + "\tRETURN r" + LINE_SEPARATOR), + Arguments.of("match (n) - [r] -> (m) RETURN r", null, null, "" + + "\tmatch (n) - [r] -> (m) RETURN r" + LINE_SEPARATOR) ); } @ParameterizedTest(name = "{index}: Notifications for \"{0}\"") @MethodSource("params") - void shouldFormatNotifications(String query, int line, int column, String expected) { + void shouldFormatNotifications(String query, Integer line, Integer column, String expected) { - InputPosition inputPosition = mock(InputPosition.class); - when(inputPosition.line()).thenReturn(line); - when(inputPosition.column()).thenReturn(column); + InputPosition inputPosition; + if (line == null || column == null) { + inputPosition = null; + } else { + inputPosition = mock(InputPosition.class); + when(inputPosition.line()).thenReturn(line); + when(inputPosition.column()).thenReturn(column); + } Notification notification = mock(Notification.class); when(notification.severity()).thenReturn("WARNING");