mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-19 19:25:48 +00:00
Added first Unit Tests
This commit is contained in:
parent
3e2d1847ed
commit
0e58c3fa35
@ -19,6 +19,9 @@
|
|||||||
|
|
||||||
## Release Candidate 12 (TBD)
|
## Release Candidate 12 (TBD)
|
||||||
|
|
||||||
|
#### Additions
|
||||||
|
* Added Unit Tests
|
||||||
|
|
||||||
#### Changes
|
#### Changes
|
||||||
* Little performance improvements
|
* Little performance improvements
|
||||||
* Bandages, Rags and Splints will no longer be consumed if your health is full and you are not on fire
|
* Bandages, Rags and Splints will no longer be consumed if your health is full and you are not on fire
|
||||||
|
26
pom.xml
26
pom.xml
@ -83,6 +83,12 @@
|
|||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>3.0.0-M4</version>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-shade-plugin</artifactId>
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
@ -212,6 +218,26 @@
|
|||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Development / Testing dependencies -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter</artifactId>
|
||||||
|
<version>5.5.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.seeseemelk</groupId>
|
||||||
|
<artifactId>MockBukkit</artifactId>
|
||||||
|
<version>v1.15-SNAPSHOT</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mockito</groupId>
|
||||||
|
<artifactId>mockito-core</artifactId>
|
||||||
|
<version>3.3.3</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- Shaded packages -->
|
<!-- Shaded packages -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.thebusybiscuit</groupId>
|
<groupId>com.github.thebusybiscuit</groupId>
|
||||||
|
@ -12,6 +12,13 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
|||||||
*/
|
*/
|
||||||
public enum MinecraftVersion {
|
public enum MinecraftVersion {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a very special state that represents the environment being a Unit
|
||||||
|
* Test and not an actual running Minecraft Server. This constant stands at
|
||||||
|
* the very top because it is the one with the least features.
|
||||||
|
*/
|
||||||
|
UNIT_TEST("Unit Test Environment"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This constant represents Minecraft (Java Edition) Version 1.14
|
* This constant represents Minecraft (Java Edition) Version 1.14
|
||||||
* (The Update Aquatic)
|
* (The Update Aquatic)
|
||||||
|
@ -48,11 +48,12 @@ public class LocalizationService extends SlimefunLocalization implements Persist
|
|||||||
|
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.prefix = prefix;
|
this.prefix = prefix;
|
||||||
|
|
||||||
translationsEnabled = SlimefunPlugin.getCfg().getBoolean("options.enable-translations");
|
|
||||||
languageKey = new NamespacedKey(plugin, LANGUAGE_PATH);
|
languageKey = new NamespacedKey(plugin, LANGUAGE_PATH);
|
||||||
defaultLanguage = new Language(serverDefaultLanguage, "11b3188fd44902f72602bd7c2141f5a70673a411adb3d81862c69e536166b");
|
|
||||||
|
|
||||||
|
if (serverDefaultLanguage != null) {
|
||||||
|
translationsEnabled = SlimefunPlugin.getCfg().getBoolean("options.enable-translations");
|
||||||
|
|
||||||
|
defaultLanguage = new Language(serverDefaultLanguage, "11b3188fd44902f72602bd7c2141f5a70673a411adb3d81862c69e536166b");
|
||||||
defaultLanguage.setMessages(getConfig().getConfiguration());
|
defaultLanguage.setMessages(getConfig().getConfiguration());
|
||||||
|
|
||||||
loadEmbeddedLanguages();
|
loadEmbeddedLanguages();
|
||||||
@ -71,6 +72,11 @@ public class LocalizationService extends SlimefunLocalization implements Persist
|
|||||||
Slimefun.getLogger().log(Level.INFO, "Available languages: {0}", String.join(", ", languages.keySet()));
|
Slimefun.getLogger().log(Level.INFO, "Available languages: {0}", String.join(", ", languages.keySet()));
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
translationsEnabled = false;
|
||||||
|
defaultLanguage = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method returns whether translations are enabled on this {@link Server}.
|
* This method returns whether translations are enabled on this {@link Server}.
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package io.github.thebusybiscuit.slimefun4.core.services.localization;
|
package io.github.thebusybiscuit.slimefun4.core.services.localization;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.UnaryOperator;
|
import java.util.function.UnaryOperator;
|
||||||
@ -85,11 +86,13 @@ public abstract class SlimefunLocalization extends Localization implements Keyed
|
|||||||
|
|
||||||
public String getMessage(Player p, String key) {
|
public String getMessage(Player p, String key) {
|
||||||
Language language = getLanguage(p);
|
Language language = getLanguage(p);
|
||||||
|
if (language == null) return "NO LANGUAGE FOUND";
|
||||||
return language.getMessages().getString(key);
|
return language.getMessages().getString(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getMessages(Player p, String key) {
|
public List<String> getMessages(Player p, String key) {
|
||||||
Language language = getLanguage(p);
|
Language language = getLanguage(p);
|
||||||
|
if (language == null) return Arrays.asList("NO LANGUAGE FOUND");
|
||||||
return language.getMessages().getStringList(key);
|
return language.getMessages().getStringList(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package io.github.thebusybiscuit.slimefun4.implementation.listeners;
|
|||||||
|
|
||||||
import org.bukkit.block.BrewingStand;
|
import org.bukkit.block.BrewingStand;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event.Result;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.CraftItemEvent;
|
import org.bukkit.event.inventory.CraftItemEvent;
|
||||||
@ -37,7 +38,8 @@ public class VanillaMachinesListener implements Listener {
|
|||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
public void onGrindstone(InventoryClickEvent e) {
|
public void onGrindstone(InventoryClickEvent e) {
|
||||||
// The Grindstone was only ever added in MC 1.14
|
// The Grindstone was only ever added in MC 1.14
|
||||||
if (!SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
|
MinecraftVersion minecraftVersion = SlimefunPlugin.getMinecraftVersion();
|
||||||
|
if (minecraftVersion != MinecraftVersion.UNIT_TEST && !minecraftVersion.isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,9 +48,10 @@ public class VanillaMachinesListener implements Listener {
|
|||||||
ItemStack item2 = e.getInventory().getContents()[1];
|
ItemStack item2 = e.getInventory().getContents()[1];
|
||||||
|
|
||||||
if (checkForUnallowedItems(item1, item2)) {
|
if (checkForUnallowedItems(item1, item2)) {
|
||||||
e.setCancelled(true);
|
e.setResult(Result.DENY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
@ -36,7 +36,6 @@ import io.github.thebusybiscuit.slimefun4.utils.SlimefunUtils;
|
|||||||
import io.github.thebusybiscuit.slimefun4.utils.itemstack.ItemStackWrapper;
|
import io.github.thebusybiscuit.slimefun4.utils.itemstack.ItemStackWrapper;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
@ -539,9 +538,18 @@ public class SlimefunItem implements Placeable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Support for legacy items
|
// Support for legacy items
|
||||||
if (this instanceof ChargableItem && SlimefunUtils.isItemSimilar(item, this.item, false)) return true;
|
if (this instanceof ChargableItem && SlimefunUtils.isItemSimilar(item, this.item, false)) {
|
||||||
else if (this instanceof SlimefunBackpack && SlimefunUtils.isItemSimilar(item, this.item, false)) return true;
|
return true;
|
||||||
else return SlimefunUtils.isItemSimilar(item, this.item, true);
|
}
|
||||||
|
else if (this instanceof SlimefunBackpack && SlimefunUtils.isItemSimilar(item, this.item, false)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (id.equals("BROKEN_SPAWNER") || id.equals("REINFORCED_SPAWNER")) {
|
||||||
|
return SlimefunUtils.isItemSimilar(item, this.item, false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return SlimefunUtils.isItemSimilar(item, this.item, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -794,14 +802,6 @@ public class SlimefunItem implements Placeable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SlimefunUtils.isItemSimilar(wrapper, SlimefunItems.BROKEN_SPAWNER, false)) {
|
|
||||||
return getByID("BROKEN_SPAWNER");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SlimefunUtils.isItemSimilar(wrapper, SlimefunItems.REPAIRED_SPAWNER, false)) {
|
|
||||||
return getByID("REINFORCED_SPAWNER");
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,9 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.plugin.java.JavaPluginLoader;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.config.Config;
|
import io.github.thebusybiscuit.cscorelib2.config.Config;
|
||||||
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
|
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
|
||||||
@ -55,13 +57,13 @@ import io.github.thebusybiscuit.slimefun4.implementation.listeners.DeathpointLis
|
|||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.DebugFishListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.DebugFishListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.DispenserListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.DispenserListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.EnhancedFurnaceListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.EnhancedFurnaceListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.MobDropListener;
|
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.ExplosionsListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.ExplosionsListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.FireworksListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.FireworksListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.GadgetsListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.GadgetsListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.GrapplingHookListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.GrapplingHookListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.IronGolemListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.IronGolemListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.ItemPickupListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.ItemPickupListener;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.MobDropListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.MultiBlockListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.MultiBlockListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.PlayerProfileListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.PlayerProfileListener;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.listeners.SeismicAxeListener;
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.SeismicAxeListener;
|
||||||
@ -103,6 +105,8 @@ import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
|||||||
public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
|
public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
|
||||||
|
|
||||||
public static SlimefunPlugin instance;
|
public static SlimefunPlugin instance;
|
||||||
|
|
||||||
|
private final boolean isTestEnvironment;
|
||||||
private MinecraftVersion minecraftVersion = MinecraftVersion.UNKNOWN;
|
private MinecraftVersion minecraftVersion = MinecraftVersion.UNKNOWN;
|
||||||
|
|
||||||
private final SlimefunRegistry registry = new SlimefunRegistry();
|
private final SlimefunRegistry registry = new SlimefunRegistry();
|
||||||
@ -139,9 +143,24 @@ public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
|
|||||||
private final BackpackListener backpackListener = new BackpackListener();
|
private final BackpackListener backpackListener = new BackpackListener();
|
||||||
private final SlimefunBowListener bowListener = new SlimefunBowListener();
|
private final SlimefunBowListener bowListener = new SlimefunBowListener();
|
||||||
|
|
||||||
|
public SlimefunPlugin() {
|
||||||
|
super();
|
||||||
|
isTestEnvironment = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SlimefunPlugin(JavaPluginLoader loader, PluginDescriptionFile description, File dataFolder, File file) {
|
||||||
|
super(loader, description, dataFolder, file);
|
||||||
|
isTestEnvironment = true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
if (getServer().getPluginManager().isPluginEnabled("CS-CoreLib")) {
|
if (isTestEnvironment) {
|
||||||
|
instance = this;
|
||||||
|
minecraftVersion = MinecraftVersion.UNIT_TEST;
|
||||||
|
local = new LocalizationService(this, "", null);
|
||||||
|
}
|
||||||
|
else if (getServer().getPluginManager().isPluginEnabled("CS-CoreLib")) {
|
||||||
long timestamp = System.nanoTime();
|
long timestamp = System.nanoTime();
|
||||||
|
|
||||||
// We wanna ensure that the Server uses a compatible version of Minecraft
|
// We wanna ensure that the Server uses a compatible version of Minecraft
|
||||||
@ -339,7 +358,7 @@ public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
|
|||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
// Slimefun never loaded successfully, so we don't even bother doing stuff here
|
// Slimefun never loaded successfully, so we don't even bother doing stuff here
|
||||||
if (instance == null) {
|
if (instance == null || isTestEnvironment) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.mocks;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
|
||||||
|
class MockSlimefunItem extends SlimefunItem {
|
||||||
|
|
||||||
|
public MockSlimefunItem(Category category, ItemStack item, String id) {
|
||||||
|
super(category, item, id, null, new ItemStack[9]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.mocks;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
|
||||||
|
public final class SlimefunMocks {
|
||||||
|
|
||||||
|
private static final Category category = new Category(new NamespacedKey(SlimefunPlugin.instance, "test"), new ItemStack(Material.EMERALD));
|
||||||
|
|
||||||
|
private SlimefunMocks() {}
|
||||||
|
|
||||||
|
public static Inventory mockInventory(InventoryType type, ItemStack... contents) {
|
||||||
|
Inventory inv = Mockito.mock(Inventory.class);
|
||||||
|
|
||||||
|
when(inv.getType()).thenReturn(type);
|
||||||
|
when(inv.getContents()).thenReturn(contents);
|
||||||
|
|
||||||
|
return inv;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SlimefunItem mockSlimefunItem(String id, ItemStack item) {
|
||||||
|
return new MockSlimefunItem(category, item, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.tests.items;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
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.cscorelib2.item.CustomItem;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.mocks.SlimefunMocks;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ItemState;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
|
||||||
|
public class TestSlimefunItemRegistration {
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSuccessfulRegistration() {
|
||||||
|
SlimefunItem item = SlimefunMocks.mockSlimefunItem("TEST_ITEM", new CustomItem(Material.DIAMOND, "&cTest"));
|
||||||
|
item.register(plugin);
|
||||||
|
|
||||||
|
Assertions.assertEquals(ItemState.ENABLED, item.getState());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIdConflict() {
|
||||||
|
SlimefunItem item = SlimefunMocks.mockSlimefunItem("DUPLICATE_ID", new CustomItem(Material.DIAMOND, "&cTest"));
|
||||||
|
item.register(plugin);
|
||||||
|
|
||||||
|
SlimefunItem item2 = SlimefunMocks.mockSlimefunItem("DUPLICATE_ID", new CustomItem(Material.DIAMOND, "&cTest"));
|
||||||
|
item2.register(plugin);
|
||||||
|
|
||||||
|
Assertions.assertEquals(ItemState.ENABLED, item.getState());
|
||||||
|
Assertions.assertEquals(ItemState.UNREGISTERED, item2.getState());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.tests.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.IronGolem;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
|
import org.bukkit.inventory.EquipmentSlot;
|
||||||
|
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 org.mockito.Mockito;
|
||||||
|
|
||||||
|
import be.seeseemelk.mockbukkit.MockBukkit;
|
||||||
|
import be.seeseemelk.mockbukkit.ServerMock;
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.IronGolemListener;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.mocks.SlimefunMocks;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
|
||||||
|
public class TestIronGolemListener {
|
||||||
|
|
||||||
|
private static SlimefunPlugin plugin;
|
||||||
|
private static IronGolemListener listener;
|
||||||
|
private static ServerMock server;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
public static void load() {
|
||||||
|
server = MockBukkit.mock();
|
||||||
|
plugin = MockBukkit.load(SlimefunPlugin.class);
|
||||||
|
listener = new IronGolemListener(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
public static void unload() {
|
||||||
|
MockBukkit.unmock();
|
||||||
|
}
|
||||||
|
|
||||||
|
private PlayerInteractEntityEvent callIronGolemEvent(EquipmentSlot hand, ItemStack itemInHand) {
|
||||||
|
// Fake Player with an Iron Ingot
|
||||||
|
Player player = server.addPlayer();
|
||||||
|
|
||||||
|
if (hand == EquipmentSlot.HAND) {
|
||||||
|
player.getInventory().setItemInMainHand(itemInHand);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
player.getInventory().setItemInOffHand(itemInHand);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fake Iron Golem
|
||||||
|
IronGolem golem = Mockito.mock(IronGolem.class);
|
||||||
|
Mockito.when(golem.getType()).thenReturn(EntityType.IRON_GOLEM);
|
||||||
|
|
||||||
|
// Fake Event
|
||||||
|
PlayerInteractEntityEvent event = new PlayerInteractEntityEvent(player, golem, hand);
|
||||||
|
listener.onIronGolemHeal(event);
|
||||||
|
return event;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWithIron() {
|
||||||
|
// This should heal the Iron Golem
|
||||||
|
ItemStack item = new ItemStack(Material.IRON_INGOT);
|
||||||
|
|
||||||
|
PlayerInteractEntityEvent event = callIronGolemEvent(EquipmentSlot.HAND, item);
|
||||||
|
Assertions.assertFalse(event.isCancelled());
|
||||||
|
|
||||||
|
PlayerInteractEntityEvent event2 = callIronGolemEvent(EquipmentSlot.OFF_HAND, item);
|
||||||
|
Assertions.assertFalse(event2.isCancelled());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWithSlimefunIron() {
|
||||||
|
SlimefunItem slimefunItem = SlimefunMocks.mockSlimefunItem("SLIMEFUN_IRON", new CustomItem(Material.IRON_INGOT, "&cSlimefun Iron"));
|
||||||
|
slimefunItem.register(plugin);
|
||||||
|
// The Event should be cancelled, we do not wanna use Slimefun Items for this
|
||||||
|
PlayerInteractEntityEvent event = callIronGolemEvent(EquipmentSlot.HAND, slimefunItem.getItem());
|
||||||
|
Assertions.assertTrue(event.isCancelled());
|
||||||
|
|
||||||
|
PlayerInteractEntityEvent event2 = callIronGolemEvent(EquipmentSlot.OFF_HAND, slimefunItem.getItem());
|
||||||
|
Assertions.assertTrue(event2.isCancelled());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.tests.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event.Result;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.event.inventory.InventoryAction;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
|
import org.bukkit.event.inventory.InventoryType.SlotType;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.InventoryView;
|
||||||
|
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.inventory.meta.EnchantedBookMetaMock;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.implementation.listeners.VanillaMachinesListener;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.mocks.SlimefunMocks;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
|
||||||
|
public class TestVanillaMachinesListener {
|
||||||
|
|
||||||
|
private static SlimefunPlugin plugin;
|
||||||
|
private static VanillaMachinesListener listener;
|
||||||
|
private static ServerMock server;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
public static void load() {
|
||||||
|
server = MockBukkit.mock();
|
||||||
|
plugin = MockBukkit.load(SlimefunPlugin.class);
|
||||||
|
listener = new VanillaMachinesListener(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
public static void unload() {
|
||||||
|
MockBukkit.unmock();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGrindStoneWithoutSlimefunItems() {
|
||||||
|
Player player = server.addPlayer();
|
||||||
|
Inventory inv = SlimefunMocks.mockInventory(InventoryType.GRINDSTONE, new ItemStack(Material.ENCHANTED_BOOK), null);
|
||||||
|
InventoryView view = player.openInventory(inv);
|
||||||
|
InventoryClickEvent event = new InventoryClickEvent(view, SlotType.CONTAINER, 2, ClickType.LEFT, InventoryAction.PICKUP_ONE);
|
||||||
|
listener.onGrindstone(event);
|
||||||
|
|
||||||
|
Assertions.assertEquals(Result.DEFAULT, event.getResult());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user