From ece369ae554c69edf450d550b8aad2db60179169 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Sat, 26 Oct 2024 15:16:49 +0200 Subject: [PATCH] Add default config test --- .../java/io/delilaheve/CustomAnvilTests.java | 3 + .../cuanvil/ConfigResetCustomAnvilTest.java | 38 ++++++++ .../cuanvil/DefaultCustomAnvilTest.java | 8 +- ...AnvilFuseTest.java => AnvilFuseTests.java} | 2 +- .../cuanvil/config/DefaultConfigTests.java | 89 +++++++++++++++++++ 5 files changed, 132 insertions(+), 8 deletions(-) create mode 100644 src/test/java/xyz/alexcrea/cuanvil/ConfigResetCustomAnvilTest.java rename src/test/java/xyz/alexcrea/cuanvil/anvil/{AnvilFuseTest.java => AnvilFuseTests.java} (97%) create mode 100644 src/test/java/xyz/alexcrea/cuanvil/config/DefaultConfigTests.java diff --git a/src/test/java/io/delilaheve/CustomAnvilTests.java b/src/test/java/io/delilaheve/CustomAnvilTests.java index 0fb8cbe..6c91893 100644 --- a/src/test/java/io/delilaheve/CustomAnvilTests.java +++ b/src/test/java/io/delilaheve/CustomAnvilTests.java @@ -10,6 +10,9 @@ public class CustomAnvilTests extends DefaultCustomAnvilTest { public void simpleInitTest() { Assertions.assertNotNull(server); Assertions.assertNotNull(plugin); + + // Test shutdown + plugin.onDisable(); } } diff --git a/src/test/java/xyz/alexcrea/cuanvil/ConfigResetCustomAnvilTest.java b/src/test/java/xyz/alexcrea/cuanvil/ConfigResetCustomAnvilTest.java new file mode 100644 index 0000000..7055078 --- /dev/null +++ b/src/test/java/xyz/alexcrea/cuanvil/ConfigResetCustomAnvilTest.java @@ -0,0 +1,38 @@ +package xyz.alexcrea.cuanvil; + +import org.junit.jupiter.api.AfterEach; +import xyz.alexcrea.cuanvil.config.ConfigHolder; + +import java.io.File; + +public class ConfigResetCustomAnvilTest extends DefaultCustomAnvilTest { + + @Override + @AfterEach + public void tearDown() { + // Destroy saved config file + String[] configs = new String[]{ + "config.yml", + "item_groups.yml", + "enchant_conflict.yml", + "unit_repair_item.yml", + "custom_recipes.yml" + }; + for (String config : configs) { + File configFile = new File(plugin.getDataFolder(), config); + configFile.delete(); + } + + // Set config to null + ConfigHolder.DEFAULT_CONFIG = null; + ConfigHolder.ITEM_GROUP_HOLDER = null; + ConfigHolder.CONFLICT_HOLDER = null; + ConfigHolder.UNIT_REPAIR_HOLDER = null; + ConfigHolder.CUSTOM_RECIPE_HOLDER = null; + + // Do parent works + super.tearDown(); + } + + +} diff --git a/src/test/java/xyz/alexcrea/cuanvil/DefaultCustomAnvilTest.java b/src/test/java/xyz/alexcrea/cuanvil/DefaultCustomAnvilTest.java index 2cb6b62..1813bc3 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/DefaultCustomAnvilTest.java +++ b/src/test/java/xyz/alexcrea/cuanvil/DefaultCustomAnvilTest.java @@ -9,6 +9,7 @@ import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.enchant.CAEnchantment; import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -29,13 +30,6 @@ public class DefaultCustomAnvilTest { @AfterEach public void tearDown() { - // Set config to null - ConfigHolder.DEFAULT_CONFIG = null; - ConfigHolder.ITEM_GROUP_HOLDER = null; - ConfigHolder.CONFLICT_HOLDER = null; - ConfigHolder.UNIT_REPAIR_HOLDER = null; - ConfigHolder.CUSTOM_RECIPE_HOLDER = null; - // Stop the mock server MockBukkit.unmock(); diff --git a/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTest.java b/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java similarity index 97% rename from src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTest.java rename to src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java index 6b7bca7..c2ab00f 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTest.java +++ b/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java @@ -13,7 +13,7 @@ import xyz.alexcrea.cuanvil.util.AnvilFuseTestData; import xyz.alexcrea.cuanvil.util.AnvilFuseTestUtil; import xyz.alexcrea.cuanvil.util.CommonItemUtil; -public class AnvilFuseTest extends DefaultCustomAnvilTest { +public class AnvilFuseTests extends DefaultCustomAnvilTest { private AnvilInventory anvil; private PlayerMock player; diff --git a/src/test/java/xyz/alexcrea/cuanvil/config/DefaultConfigTests.java b/src/test/java/xyz/alexcrea/cuanvil/config/DefaultConfigTests.java new file mode 100644 index 0000000..ce5177b --- /dev/null +++ b/src/test/java/xyz/alexcrea/cuanvil/config/DefaultConfigTests.java @@ -0,0 +1,89 @@ +package xyz.alexcrea.cuanvil.config; + +import io.delilaheve.util.ConfigOptions; +import io.papermc.paper.registry.RegistryAccess; +import io.papermc.paper.registry.RegistryKey; +import org.bukkit.NamespacedKey; +import org.bukkit.configuration.file.FileConfiguration; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import xyz.alexcrea.cuanvil.DefaultCustomAnvilTest; +import xyz.alexcrea.cuanvil.enchant.CAEnchantment; +import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry; +import xyz.alexcrea.cuanvil.enchant.EnchantmentRarity; + +import java.util.stream.Stream; + +public class DefaultConfigTests extends DefaultCustomAnvilTest { + + @ParameterizedTest + @MethodSource("provideStringsForIsConfiguredValueValid") + public void isConfiguredValueValid(String path, Object value){ + FileConfiguration config = ConfigHolder.DEFAULT_CONFIG.getConfig(); + + Assertions.assertEquals(value.toString(), config.getString(path), "Default value is not the same as in the config file"); + } + + @ParameterizedTest + @MethodSource("provideForEnchantmentsTests") + public void testDefaultEnchantLimit(NamespacedKey key){ + CAEnchantment enchantment = CAEnchantmentRegistry.getInstance().getByKey(key); + Assertions.assertNotNull(enchantment, "Enchantment was somehow not found"); + + int levelLimit = ConfigOptions.INSTANCE.enchantLimit(enchantment); + int mergeLimit = ConfigOptions.INSTANCE.maxBeforeMergeDisabled(enchantment); + + Assertions.assertEquals(enchantment.defaultMaxLevel(), levelLimit,"Default enchantment limit is not the same as expected limit "); + + if(mergeLimit >= 0) { // negative mean default + Assertions.assertEquals(enchantment.defaultMaxLevel(), mergeLimit,"Default enchantment merge limit is not the same as expected limit "); + } + + } + + @ParameterizedTest + @MethodSource("provideForEnchantmentsTests") + public void testDefaultEnchantValues(NamespacedKey key){ + CAEnchantment enchantment = CAEnchantmentRegistry.getInstance().getByKey(key); + Assertions.assertNotNull(enchantment, "Enchantment was somehow not found"); + + int itemValue = ConfigOptions.INSTANCE.enchantmentValue(enchantment, false); + int bookValue = ConfigOptions.INSTANCE.enchantmentValue(enchantment, true); + + EnchantmentRarity rarity = enchantment.defaultRarity(); + + Assertions.assertEquals(rarity.getItemValue(), itemValue,"Default enchantment item value is not the same as expected value"); + Assertions.assertEquals(rarity.getBookValue(), bookValue,"Default enchantment book value is not the same as expected value"); + } + + + private static Stream provideStringsForIsConfiguredValueValid() { + return Stream.of( + // Default options + Arguments.of(ConfigOptions.CAP_ANVIL_COST, ConfigOptions.DEFAULT_CAP_ANVIL_COST), + Arguments.of(ConfigOptions.CAP_ANVIL_COST, ConfigOptions.DEFAULT_CAP_ANVIL_COST), + Arguments.of(ConfigOptions.MAX_ANVIL_COST, ConfigOptions.DEFAULT_MAX_ANVIL_COST), + Arguments.of(ConfigOptions.REMOVE_ANVIL_COST_LIMIT, ConfigOptions.DEFAULT_REMOVE_ANVIL_COST_LIMIT), + Arguments.of(ConfigOptions.REPLACE_TOO_EXPENSIVE, ConfigOptions.DEFAULT_REPLACE_TOO_EXPENSIVE), + Arguments.of(ConfigOptions.ITEM_REPAIR_COST, ConfigOptions.DEFAULT_ITEM_REPAIR_COST), + Arguments.of(ConfigOptions.UNIT_REPAIR_COST, ConfigOptions.DEFAULT_UNIT_REPAIR_COST), + Arguments.of(ConfigOptions.ITEM_RENAME_COST, ConfigOptions.DEFAULT_ITEM_RENAME_COST), + Arguments.of(ConfigOptions.SACRIFICE_ILLEGAL_COST, ConfigOptions.DEFAULT_SACRIFICE_ILLEGAL_COST), + // Color options + Arguments.of(ConfigOptions.ALLOW_COLOR_CODE, ConfigOptions.DEFAULT_ALLOW_COLOR_CODE), + Arguments.of(ConfigOptions.ALLOW_HEXADECIMAL_COLOR, ConfigOptions.DEFAULT_ALLOW_HEXADECIMAL_COLOR), + Arguments.of(ConfigOptions.PERMISSION_NEEDED_FOR_COLOR, ConfigOptions.DEFAULT_PERMISSION_NEEDED_FOR_COLOR), + Arguments.of(ConfigOptions.USE_OF_COLOR_COST, ConfigOptions.DEFAULT_USE_OF_COLOR_COST) + + ); + } + + // Test every enchantment defaults + private static Stream provideForEnchantmentsTests() { + return RegistryAccess.registryAccess().getRegistry(RegistryKey.ENCHANTMENT) + .stream().map(enchantment -> Arguments.of(enchantment.getKey())); + } + +}