diff --git a/src/test/java/io/github/thebusybiscuit/slimefun4/testing/interfaces/SlimefunItemTest.java b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/interfaces/SlimefunItemTest.java new file mode 100644 index 000000000..3e8bbb775 --- /dev/null +++ b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/interfaces/SlimefunItemTest.java @@ -0,0 +1,23 @@ +package io.github.thebusybiscuit.slimefun4.testing.interfaces; + +import org.bukkit.entity.Player; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.EquipmentSlot; + +import io.github.thebusybiscuit.slimefun4.api.events.PlayerRightClickEvent; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemUseHandler; + +public interface SlimefunItemTest { + + T registerSlimefunItem(SlimefunPlugin plugin, String id); + + default void simulateNormalRightClick(Player player, T item) { + PlayerInteractEvent e = new PlayerInteractEvent(player, Action.RIGHT_CLICK_AIR, item.getItem().clone(), null, null, EquipmentSlot.HAND); + PlayerRightClickEvent event = new PlayerRightClickEvent(e); + item.callItemHandler(ItemUseHandler.class, handler -> handler.onRightClick(event)); + } + +} diff --git a/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/implementations/TestEnderBackpack.java b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/implementations/TestEnderBackpack.java new file mode 100644 index 000000000..7487d292e --- /dev/null +++ b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/implementations/TestEnderBackpack.java @@ -0,0 +1,55 @@ +package io.github.thebusybiscuit.slimefun4.testing.tests.items.implementations; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import be.seeseemelk.mockbukkit.MockBukkit; +import be.seeseemelk.mockbukkit.ServerMock; +import io.github.thebusybiscuit.slimefun4.implementation.items.backpacks.EnderBackpack; +import io.github.thebusybiscuit.slimefun4.testing.TestUtilities; +import io.github.thebusybiscuit.slimefun4.testing.interfaces.SlimefunItemTest; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; + +public class TestEnderBackpack implements SlimefunItemTest { + + private static ServerMock server; + private static SlimefunPlugin plugin; + + @BeforeAll + public static void load() { + server = MockBukkit.mock(); + plugin = MockBukkit.load(SlimefunPlugin.class); + } + + @AfterAll + public static void unload() { + MockBukkit.unmock(); + } + + @Override + public EnderBackpack registerSlimefunItem(SlimefunPlugin plugin, String id) { + SlimefunItemStack item = new SlimefunItemStack(id, Material.ENDER_CHEST, "&5Test Ender Backpack"); + EnderBackpack backpack = new EnderBackpack(TestUtilities.getCategory(plugin, "ender_backpack"), item, RecipeType.NULL, new ItemStack[9]); + backpack.register(plugin); + return backpack; + } + + @Test + public void testRightClickBehaviour() { + Player player = server.addPlayer(); + EnderBackpack backpack = registerSlimefunItem(plugin, "TEST_ENDER_BACKPACK"); + + simulateNormalRightClick(player, backpack); + + // We expect the Enderchest to be open now + Assertions.assertEquals(player.getEnderChest(), player.getOpenInventory().getTopInventory()); + } + +}