diff --git a/java-snapshot-testing-core/src/main/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializer.java b/java-snapshot-testing-core/src/main/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializer.java index d5e2196..49042ad 100644 --- a/java-snapshot-testing-core/src/main/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializer.java +++ b/java-snapshot-testing-core/src/main/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializer.java @@ -3,9 +3,6 @@ import au.com.origin.snapshots.Snapshot; import au.com.origin.snapshots.SnapshotFile; import au.com.origin.snapshots.SnapshotSerializerContext; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; /** @@ -18,22 +15,12 @@ public class ToStringSnapshotSerializer implements SnapshotSerializer { @Override public Snapshot apply(Object object, SnapshotSerializerContext gen) { - List objects = Arrays.asList(object); - String body = - "[\n" - + objects.stream() - .map(Object::toString) - .map( - it -> { - if (it.contains(SnapshotFile.SPLIT_STRING)) { - log.warn( - "Found 3 consecutive lines in your snapshot \\n\\n\\n. This sequence is reserved as the snapshot separator - replacing with \\n.\\n.\\n"); - return it.replaceAll(SnapshotFile.SPLIT_STRING, "\n.\n.\n"); - } - return it; - }) - .collect(Collectors.joining("\n")) - + "\n]"; + String body = "[\n" + object.toString() + "\n]"; + if (body.contains(SnapshotFile.SPLIT_STRING)) { + log.warn( + "Found 3 consecutive lines in your snapshot \\n\\n\\n. This sequence is reserved as the snapshot separator - replacing with \\n.\\n.\\n"); + body = body.replaceAll(SnapshotFile.SPLIT_STRING, "\n.\n.\n"); + } return gen.toSnapshot(body); } diff --git a/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java b/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java index 2c3fc99..b8035db 100644 --- a/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java +++ b/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java @@ -58,6 +58,24 @@ void shouldReplaceThreeConsecutiveNewLines() { assertThat(result.getBody()).isEqualTo("[\nJohn\n.\n.\nDoe\n]"); } + @Test + void shouldReplaceTwoConsecutiveNewLinesAtEnd() { + Snapshot result = serializer.apply("John Doe\n\n", mockSnapshotGenerator); + assertThat(result.getBody()).isEqualTo("[\nJohn Doe\n.\n.\n]"); + } + + @Test + void shouldReplaceTwoConsecutiveNewLinesAtBeginning() { + Snapshot result = serializer.apply("\n\nJohn Doe", mockSnapshotGenerator); + assertThat(result.getBody()).isEqualTo("[\n.\n.\nJohn Doe\n]"); + } + + @Test + void shouldReplaceIllegalNewlineSequencesEverywhere() { + Snapshot result = serializer.apply("\n\nJohn\n\n\nDoe\n\n", mockSnapshotGenerator); + assertThat(result.getBody()).isEqualTo("[\n.\n.\nJohn\n.\n.\nDoe\n.\n.\n]"); + } + @AllArgsConstructor @Data private static class Dummy {