From d710b2d2d50c51558e135f96649243901f0b3dc2 Mon Sep 17 00:00:00 2001 From: Christian Koop Date: Wed, 16 Nov 2022 02:29:41 +0100 Subject: [PATCH] Add unit test for SongodaYamlConfig persisting comments on key-upgrades --- .../songoda/SongodaYamlConfig.java | 2 ++ .../songoda/SongodaYamlConfigTest.java | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/Core/src/main/java/com/songoda/core/configuration/songoda/SongodaYamlConfig.java b/Core/src/main/java/com/songoda/core/configuration/songoda/SongodaYamlConfig.java index 88bc95ad..d0b964ff 100644 --- a/Core/src/main/java/com/songoda/core/configuration/songoda/SongodaYamlConfig.java +++ b/Core/src/main/java/com/songoda/core/configuration/songoda/SongodaYamlConfig.java @@ -183,6 +183,8 @@ public class SongodaYamlConfig extends YamlConfiguration { upgradeOldConfigVersionByOne(); } + cleanValuesMap(this.values); + return true; } diff --git a/Core/src/test/java/com/songoda/core/configuration/songoda/SongodaYamlConfigTest.java b/Core/src/test/java/com/songoda/core/configuration/songoda/SongodaYamlConfigTest.java index eb224b4b..08537edc 100644 --- a/Core/src/test/java/com/songoda/core/configuration/songoda/SongodaYamlConfigTest.java +++ b/Core/src/test/java/com/songoda/core/configuration/songoda/SongodaYamlConfigTest.java @@ -8,9 +8,11 @@ import org.junit.jupiter.api.Test; import java.io.File; import java.io.IOException; import java.io.StringReader; +import java.io.StringWriter; import java.nio.file.Files; import java.nio.file.Path; import java.util.Comparator; +import java.util.Objects; import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; @@ -161,6 +163,33 @@ class SongodaYamlConfigTest { assertNull(entry.get()); } + @Test + void testVersionUpgradePersistsCommentsOnKeyChange() throws IOException { + SongodaYamlConfig cfg = new SongodaYamlConfig(this.cfg.toFile()) + .withVersion(2); + + cfg.createEntry("newKey", "value") + .withComment("This is a comment") + .withUpgradeStep(1, "oldKey"); + + cfg.load(new StringReader("version: 1\noldKey: old-value\n")); + + assertNull(cfg.get("oldKey")); + assertNull(cfg.getNodeComment("oldKey")); + + assertEquals("old-value", cfg.get("newKey")); + assertEquals("This is a comment", Objects.requireNonNull(cfg.getNodeComment("newKey")).get()); + + StringWriter writer = new StringWriter(); + cfg.save(writer); + + assertEquals("# Don't touch this – it's used to track the version of the config.\n" + + "version: 2\n" + + "# This is a comment\n" + + "newKey: old-value\n", + writer.toString()); + } + @Test void testReadOnlyEntry() { SongodaYamlConfig cfg = new SongodaYamlConfig(this.cfg.toFile());