mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
[CI skip] Added lots more unit tests, some will be skipped
This commit is contained in:
parent
08bc0c4aac
commit
b304ce14e1
@ -38,7 +38,7 @@ public class MagicSugar extends SimpleSlimefunItem<ItemUseHandler> {
|
|||||||
ItemUtils.consumeItem(e.getItem(), false);
|
ItemUtils.consumeItem(e.getItem(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1);
|
p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1);
|
||||||
p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 600, 3));
|
p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 600, 3));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -3,21 +3,40 @@ package io.github.thebusybiscuit.slimefun4.testing.interfaces;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
||||||
import org.bukkit.inventory.EquipmentSlot;
|
import org.bukkit.inventory.EquipmentSlot;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.slimefun4.api.events.PlayerRightClickEvent;
|
import io.github.thebusybiscuit.slimefun4.api.events.PlayerRightClickEvent;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemUseHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemUseHandler;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
public interface SlimefunItemTest<T extends SlimefunItem> {
|
public interface SlimefunItemTest<T extends SlimefunItem> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method should construct a new {@link SlimefunItem} of type T.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param plugin
|
||||||
|
* The current instance of {@link SlimefunPlugin}
|
||||||
|
* @param id
|
||||||
|
* An id for this {@link SlimefunItem}
|
||||||
|
*
|
||||||
|
* @return A newly constructed {@link SlimefunItem}
|
||||||
|
*/
|
||||||
T registerSlimefunItem(SlimefunPlugin plugin, String id);
|
T registerSlimefunItem(SlimefunPlugin plugin, String id);
|
||||||
|
|
||||||
default void simulateNormalRightClick(Player player, T item) {
|
default void simulateRightClick(Player player, T item) {
|
||||||
PlayerInteractEvent e = new PlayerInteractEvent(player, Action.RIGHT_CLICK_AIR, item.getItem().clone(), null, null, EquipmentSlot.HAND);
|
PlayerInteractEvent e = new PlayerInteractEvent(player, Action.RIGHT_CLICK_AIR, item.getItem().clone(), null, null, EquipmentSlot.HAND);
|
||||||
PlayerRightClickEvent event = new PlayerRightClickEvent(e);
|
PlayerRightClickEvent event = new PlayerRightClickEvent(e);
|
||||||
item.callItemHandler(ItemUseHandler.class, handler -> handler.onRightClick(event));
|
item.callItemHandler(ItemUseHandler.class, handler -> handler.onRightClick(event));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default void simulateConsumption(Player player, T item) {
|
||||||
|
PlayerItemConsumeEvent event = new PlayerItemConsumeEvent(player, item.getItem().clone());
|
||||||
|
item.callItemHandler(ItemConsumptionHandler.class, handler -> handler.onConsume(event, player, event.getItem()));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package io.github.thebusybiscuit.slimefun4.testing.tests.items.implementations;
|
package io.github.thebusybiscuit.slimefun4.testing.tests.items.implementations.backpacks;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -46,7 +46,7 @@ public class TestEnderBackpack implements SlimefunItemTest<EnderBackpack> {
|
|||||||
Player player = server.addPlayer();
|
Player player = server.addPlayer();
|
||||||
EnderBackpack backpack = registerSlimefunItem(plugin, "TEST_ENDER_BACKPACK");
|
EnderBackpack backpack = registerSlimefunItem(plugin, "TEST_ENDER_BACKPACK");
|
||||||
|
|
||||||
simulateNormalRightClick(player, backpack);
|
simulateRightClick(player, backpack);
|
||||||
|
|
||||||
// We expect the Enderchest to be open now
|
// We expect the Enderchest to be open now
|
||||||
Assertions.assertEquals(player.getEnderChest(), player.getOpenInventory().getTopInventory());
|
Assertions.assertEquals(player.getEnderChest(), player.getOpenInventory().getTopInventory());
|
@ -0,0 +1,57 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.testing.tests.items.implementations.food;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
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 be.seeseemelk.mockbukkit.entity.PlayerMock;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.implementation.items.food.DietCookie;
|
||||||
|
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 TestDietCookie implements SlimefunItemTest<DietCookie> {
|
||||||
|
|
||||||
|
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 DietCookie registerSlimefunItem(SlimefunPlugin plugin, String id) {
|
||||||
|
SlimefunItemStack item = new SlimefunItemStack(id, Material.COOKIE, "&5Test Cookie");
|
||||||
|
DietCookie cookie = new DietCookie(TestUtilities.getCategory(plugin, "diet_cookie"), item, RecipeType.NULL, new ItemStack[9]);
|
||||||
|
cookie.register(plugin);
|
||||||
|
return cookie;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConsumptionBehaviour() {
|
||||||
|
PlayerMock player = server.addPlayer();
|
||||||
|
DietCookie cookie = registerSlimefunItem(plugin, "TEST_DIET_COOKIE");
|
||||||
|
|
||||||
|
simulateConsumption(player, cookie);
|
||||||
|
|
||||||
|
player.assertSoundHeard(Sound.ENTITY_GENERIC_EAT);
|
||||||
|
Assertions.assertTrue(player.hasPotionEffect(PotionEffectType.LEVITATION));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.testing.tests.items.implementations.food;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
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 be.seeseemelk.mockbukkit.entity.PlayerMock;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.implementation.items.food.MagicSugar;
|
||||||
|
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 TestMagicSugar implements SlimefunItemTest<MagicSugar> {
|
||||||
|
|
||||||
|
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 MagicSugar registerSlimefunItem(SlimefunPlugin plugin, String id) {
|
||||||
|
SlimefunItemStack item = new SlimefunItemStack(id, Material.SUGAR, "&5Test Magic Sugar");
|
||||||
|
MagicSugar sugar = new MagicSugar(TestUtilities.getCategory(plugin, "magic_sugar"), item, RecipeType.NULL, new ItemStack[9]);
|
||||||
|
sugar.register(plugin);
|
||||||
|
return sugar;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRightClickBehaviour() {
|
||||||
|
PlayerMock player = server.addPlayer();
|
||||||
|
MagicSugar sugar = registerSlimefunItem(plugin, "TEST_MAGIC_SUGAR");
|
||||||
|
|
||||||
|
simulateRightClick(player, sugar);
|
||||||
|
|
||||||
|
player.assertSoundHeard(Sound.ENTITY_GENERIC_EAT);
|
||||||
|
Assertions.assertTrue(player.hasPotionEffect(PotionEffectType.SPEED));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.testing.tests.items.implementations.food;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
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 be.seeseemelk.mockbukkit.entity.PlayerMock;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.implementation.items.food.MeatJerky;
|
||||||
|
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 TestMeatJerky implements SlimefunItemTest<MeatJerky> {
|
||||||
|
|
||||||
|
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 MeatJerky registerSlimefunItem(SlimefunPlugin plugin, String id) {
|
||||||
|
SlimefunItemStack item = new SlimefunItemStack(id, Material.COOKED_BEEF, "&5Test Jerky");
|
||||||
|
MeatJerky meat = new MeatJerky(TestUtilities.getCategory(plugin, "test_jerky"), item, RecipeType.NULL, new ItemStack[9]);
|
||||||
|
meat.register(plugin);
|
||||||
|
return meat;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConsumptionBehaviour() {
|
||||||
|
PlayerMock player = server.addPlayer();
|
||||||
|
MeatJerky jerky = registerSlimefunItem(plugin, "TEST_MEAT_JERKY");
|
||||||
|
float saturation = player.getSaturation();
|
||||||
|
|
||||||
|
simulateConsumption(player, jerky);
|
||||||
|
|
||||||
|
// Saturation should have increased
|
||||||
|
Assertions.assertTrue(player.getSaturation() > saturation);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.testing.tests.items.implementations.food;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
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 be.seeseemelk.mockbukkit.entity.PlayerMock;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.implementation.items.food.MonsterJerky;
|
||||||
|
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 TestMonsterJerky implements SlimefunItemTest<MonsterJerky> {
|
||||||
|
|
||||||
|
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 MonsterJerky registerSlimefunItem(SlimefunPlugin plugin, String id) {
|
||||||
|
SlimefunItemStack item = new SlimefunItemStack(id, Material.ROTTEN_FLESH, "&5Test Monster Jerky");
|
||||||
|
MonsterJerky jerky = new MonsterJerky(TestUtilities.getCategory(plugin, "monster_jerky"), item, RecipeType.NULL, new ItemStack[9]);
|
||||||
|
jerky.register(plugin);
|
||||||
|
return jerky;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConsumptionBehaviour() {
|
||||||
|
PlayerMock player = server.addPlayer();
|
||||||
|
player.addPotionEffect(PotionEffectType.HUNGER.createEffect(20, 2));
|
||||||
|
MonsterJerky jerky = registerSlimefunItem(plugin, "TEST_MONSTER_JERKY");
|
||||||
|
|
||||||
|
simulateConsumption(player, jerky);
|
||||||
|
|
||||||
|
Assertions.assertFalse(player.hasPotionEffect(PotionEffectType.HUNGER));
|
||||||
|
Assertions.assertTrue(player.hasPotionEffect(PotionEffectType.SATURATION));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user