From cafbb0ef08492166eb1e204cdaf915a2d3b1e019 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Thu, 14 Nov 2024 21:55:30 +0100 Subject: [PATCH] faster tests by not mocking every time --- .../delilaheve/util/EnchantmentUtilTests.java | 4 +- .../cuanvil/anvil/AnvilFuseTests.java | 31 ++++++++----- .../cuanvil/api/ConflictApiTests.java | 2 +- .../cuanvil/config/DefaultConfigTests.java | 4 +- .../alexcrea/cuanvil/mock/AnvilViewMock.java | 2 +- .../cuanvil/mock/EnchantedItemStackMock.java | 2 +- .../cuanvil/tests/DefaultCustomAnvilTest.java | 4 +- .../cuanvil/tests/SharedCustomAnvilTest.java | 45 +++++++++++++++++++ 8 files changed, 75 insertions(+), 19 deletions(-) create mode 100644 src/test/java/xyz/alexcrea/cuanvil/tests/SharedCustomAnvilTest.java diff --git a/src/test/java/io/delilaheve/util/EnchantmentUtilTests.java b/src/test/java/io/delilaheve/util/EnchantmentUtilTests.java index 5344c6c..0be9f08 100644 --- a/src/test/java/io/delilaheve/util/EnchantmentUtilTests.java +++ b/src/test/java/io/delilaheve/util/EnchantmentUtilTests.java @@ -1,7 +1,5 @@ package io.delilaheve.util; -import org.mockbukkit.mockbukkit.entity.PlayerMock; -import org.mockbukkit.mockbukkit.inventory.ItemStackMock; import io.delilaheve.CustomAnvil; import org.bukkit.Material; import org.bukkit.event.inventory.InventoryType; @@ -12,6 +10,8 @@ import org.bukkit.permissions.PermissionAttachment; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockbukkit.mockbukkit.entity.PlayerMock; +import org.mockbukkit.mockbukkit.inventory.ItemStackMock; import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.tests.ConfigResetCustomAnvilTest; import xyz.alexcrea.cuanvil.util.AnvilFuseTestData; diff --git a/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java b/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java index b197ed5..4d540ec 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java +++ b/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java @@ -1,39 +1,50 @@ package xyz.alexcrea.cuanvil.anvil; -import org.mockbukkit.mockbukkit.entity.PlayerMock; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.AnvilInventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockbukkit.mockbukkit.entity.PlayerMock; import xyz.alexcrea.cuanvil.config.ConfigHolder; -import xyz.alexcrea.cuanvil.tests.DefaultCustomAnvilTest; +import xyz.alexcrea.cuanvil.tests.SharedCustomAnvilTest; import xyz.alexcrea.cuanvil.util.AnvilFuseTestData; import xyz.alexcrea.cuanvil.util.AnvilFuseTestUtil; import xyz.alexcrea.cuanvil.util.CommonItemUtil; -public class AnvilFuseTests extends DefaultCustomAnvilTest { +public class AnvilFuseTests extends SharedCustomAnvilTest { - private AnvilInventory anvil; - private PlayerMock player; + private static AnvilInventory anvil; + private static PlayerMock player; - @Override - @BeforeEach - public void setUp() { - super.setUp(); + @BeforeAll + public static void setUp() { // Mock used player & open anvil player = server.addPlayer(); Inventory anvil = server.createInventory(player, InventoryType.ANVIL); - this.anvil = (AnvilInventory) anvil; + AnvilFuseTests.anvil = (AnvilInventory) anvil; player.openInventory(anvil); ConfigHolder.DEFAULT_CONFIG.getConfig().set("debug_log", true); ConfigHolder.DEFAULT_CONFIG.getConfig().set("debug_log_verbose", true); } + @BeforeEach + public void prepareAnvil(){ + anvil.clear(); + } + + @AfterAll + public static void tearDown() { + player = null; + anvil = null; + } + @Test public void mergeFuseTest(){ // Literally just test a sharpness 4 + sharpness 4 diff --git a/src/test/java/xyz/alexcrea/cuanvil/api/ConflictApiTests.java b/src/test/java/xyz/alexcrea/cuanvil/api/ConflictApiTests.java index 6115a17..3a4b48e 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/api/ConflictApiTests.java +++ b/src/test/java/xyz/alexcrea/cuanvil/api/ConflictApiTests.java @@ -1,6 +1,5 @@ package xyz.alexcrea.cuanvil.api; -import org.mockbukkit.mockbukkit.entity.PlayerMock; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.event.inventory.InventoryType; @@ -10,6 +9,7 @@ import org.bukkit.inventory.ItemStack; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockbukkit.mockbukkit.entity.PlayerMock; import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.enchant.CAEnchantment; import xyz.alexcrea.cuanvil.group.EnchantConflictGroup; diff --git a/src/test/java/xyz/alexcrea/cuanvil/config/DefaultConfigTests.java b/src/test/java/xyz/alexcrea/cuanvil/config/DefaultConfigTests.java index dd87160..ac3f73e 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/config/DefaultConfigTests.java +++ b/src/test/java/xyz/alexcrea/cuanvil/config/DefaultConfigTests.java @@ -12,11 +12,11 @@ import org.junit.jupiter.params.provider.MethodSource; import xyz.alexcrea.cuanvil.enchant.CAEnchantment; import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry; import xyz.alexcrea.cuanvil.enchant.EnchantmentRarity; -import xyz.alexcrea.cuanvil.tests.DefaultCustomAnvilTest; +import xyz.alexcrea.cuanvil.tests.SharedCustomAnvilTest; import java.util.stream.Stream; -public class DefaultConfigTests extends DefaultCustomAnvilTest { +public class DefaultConfigTests extends SharedCustomAnvilTest { @ParameterizedTest @MethodSource("provideStringsForIsConfiguredValueValid") diff --git a/src/test/java/xyz/alexcrea/cuanvil/mock/AnvilViewMock.java b/src/test/java/xyz/alexcrea/cuanvil/mock/AnvilViewMock.java index 13ac233..cdb4c44 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/mock/AnvilViewMock.java +++ b/src/test/java/xyz/alexcrea/cuanvil/mock/AnvilViewMock.java @@ -1,11 +1,11 @@ package xyz.alexcrea.cuanvil.mock; -import org.mockbukkit.mockbukkit.inventory.PlayerInventoryViewMock; import org.bukkit.entity.HumanEntity; import org.bukkit.inventory.AnvilInventory; import org.bukkit.inventory.view.AnvilView; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.mockbukkit.mockbukkit.inventory.PlayerInventoryViewMock; @SuppressWarnings({"removal"}) public class AnvilViewMock extends PlayerInventoryViewMock implements AnvilView { diff --git a/src/test/java/xyz/alexcrea/cuanvil/mock/EnchantedItemStackMock.java b/src/test/java/xyz/alexcrea/cuanvil/mock/EnchantedItemStackMock.java index 274cf9c..e7383f3 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/mock/EnchantedItemStackMock.java +++ b/src/test/java/xyz/alexcrea/cuanvil/mock/EnchantedItemStackMock.java @@ -1,10 +1,10 @@ package xyz.alexcrea.cuanvil.mock; -import org.mockbukkit.mockbukkit.inventory.ItemStackMock; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import org.mockbukkit.mockbukkit.inventory.ItemStackMock; public class EnchantedItemStackMock extends ItemStackMock { diff --git a/src/test/java/xyz/alexcrea/cuanvil/tests/DefaultCustomAnvilTest.java b/src/test/java/xyz/alexcrea/cuanvil/tests/DefaultCustomAnvilTest.java index f85c713..3a1c399 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/tests/DefaultCustomAnvilTest.java +++ b/src/test/java/xyz/alexcrea/cuanvil/tests/DefaultCustomAnvilTest.java @@ -1,10 +1,10 @@ package xyz.alexcrea.cuanvil.tests; -import org.mockbukkit.mockbukkit.MockBukkit; -import org.mockbukkit.mockbukkit.ServerMock; import io.delilaheve.CustomAnvil; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.mockbukkit.mockbukkit.MockBukkit; +import org.mockbukkit.mockbukkit.ServerMock; import xyz.alexcrea.cuanvil.enchant.CAEnchantment; import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry; diff --git a/src/test/java/xyz/alexcrea/cuanvil/tests/SharedCustomAnvilTest.java b/src/test/java/xyz/alexcrea/cuanvil/tests/SharedCustomAnvilTest.java new file mode 100644 index 0000000..02844f4 --- /dev/null +++ b/src/test/java/xyz/alexcrea/cuanvil/tests/SharedCustomAnvilTest.java @@ -0,0 +1,45 @@ +package xyz.alexcrea.cuanvil.tests; + +import io.delilaheve.CustomAnvil; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.mockbukkit.mockbukkit.MockBukkit; +import org.mockbukkit.mockbukkit.ServerMock; +import xyz.alexcrea.cuanvil.enchant.CAEnchantment; +import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry; + +import java.util.ArrayList; +import java.util.List; + +public abstract class SharedCustomAnvilTest { + + protected static ServerMock server; + protected static CustomAnvil plugin; + + @BeforeAll + public static void setUp() { + // Start the mock server + server = MockBukkit.mock(); + // Load your plugin + plugin = MockBukkit.load(CustomAnvil.class); + // Continue initialization of the plugin + server.getScheduler().performOneTick(); + } + + @AfterAll + public static void tearDown() { + // Stop the mock server + MockBukkit.unmock(); + + // Unregister enchantments + List toUnregister = new ArrayList<>( + CAEnchantmentRegistry.getInstance().values() + ); + + for (CAEnchantment caEnchantment : toUnregister) { + CAEnchantmentRegistry.getInstance().unregister(caEnchantment); + } + + } + +}