mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Added a template for SlimefunItem Unit Tests
This commit is contained in:
parent
8bd653a1b5
commit
bc6fe019bf
@ -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 extends SlimefunItem> {
|
||||||
|
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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<EnderBackpack> {
|
||||||
|
|
||||||
|
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());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user