diff --git a/pom.xml b/pom.xml
index b6281bc58..7c04dd460 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,7 @@
1.8
+
diff --git a/src/main/java/us/tastybento/bskyblock/api/panels/PanelItem.java b/src/main/java/us/tastybento/bskyblock/api/panels/PanelItem.java
index ea3e3a10b..5dc964640 100644
--- a/src/main/java/us/tastybento/bskyblock/api/panels/PanelItem.java
+++ b/src/main/java/us/tastybento/bskyblock/api/panels/PanelItem.java
@@ -69,7 +69,7 @@ public class PanelItem {
}
public Optional getClickHandler() {
- return Optional.of(clickHandler);
+ return Optional.ofNullable(clickHandler);
}
public boolean isGlow() {
diff --git a/src/main/java/us/tastybento/bskyblock/api/panels/builders/PanelItemBuilder.java b/src/main/java/us/tastybento/bskyblock/api/panels/builders/PanelItemBuilder.java
index 2452686a2..64ec249ad 100644
--- a/src/main/java/us/tastybento/bskyblock/api/panels/builders/PanelItemBuilder.java
+++ b/src/main/java/us/tastybento/bskyblock/api/panels/builders/PanelItemBuilder.java
@@ -1,7 +1,7 @@
package us.tastybento.bskyblock.api.panels.builders;
import java.util.ArrayList;
-import java.util.Collections;
+import java.util.Arrays;
import java.util.List;
import java.util.UUID;
@@ -36,7 +36,7 @@ public class PanelItemBuilder {
* @return PanelItemBuilder
*/
public PanelItemBuilder icon(UUID playerUUID) {
- return icon(Bukkit.getOfflinePlayer(playerUUID).getName());
+ return icon(Bukkit.getServer().getOfflinePlayer(playerUUID).getName());
}
/**
@@ -60,16 +60,35 @@ public class PanelItemBuilder {
return this;
}
+ /**
+ * Adds a list of strings to the descriptions
+ * @param description - List of strings
+ * @return PanelItemBuilder
+ */
public PanelItemBuilder description(List description) {
- this.description = description;
+ this.description.addAll(description);
return this;
}
+ /**
+ * Add any number of lines to the description
+ * @param description strings of lines
+ * @return PanelItemBuilder
+ */
public PanelItemBuilder description(String... description) {
- Collections.addAll(this.description, description);
+ List additions = Arrays.asList(description);
+ ArrayList updatableList = new ArrayList();
+ updatableList.addAll(this.description);
+ updatableList.addAll(additions);
+ this.description = updatableList;
return this;
}
+ /**
+ * Adds a line to the description
+ * @param description - string
+ * @return PanelItemBuilder
+ */
public PanelItemBuilder description(String description) {
this.description.add(description);
return this;
diff --git a/src/test/java/bskyblock/TestBSkyBlock.java b/src/test/java/bskyblock/TestBSkyBlock.java
index 2ac5f1784..77343bf3e 100644
--- a/src/test/java/bskyblock/TestBSkyBlock.java
+++ b/src/test/java/bskyblock/TestBSkyBlock.java
@@ -6,7 +6,9 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Arrays;
@@ -24,6 +26,7 @@ import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
+import org.bukkit.OfflinePlayer;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.block.Block;
@@ -33,6 +36,7 @@ import org.bukkit.event.Event;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemFactory;
import org.bukkit.inventory.meta.ItemMeta;
+import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.plugin.PluginManager;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -80,26 +84,36 @@ public class TestBSkyBlock {
private static World world;
private static Player ownerOfIsland;
private static Player visitorToIsland;
-
+
@BeforeClass
public static void setUp() {
- //PowerMockito.mockStatic(Bukkit.class);
- //Mockito.doReturn(plugin).when(BSkyBlock.getPlugin());
- //Mockito.when().thenReturn(plugin);
- world = mock(World.class);
-
-
- //Mockito.when(world.getWorldFolder()).thenReturn(worldFile);
-
Server server = mock(Server.class);
+ World world = mock(World.class);
+ world = mock(World.class);
Mockito.when(server.getLogger()).thenReturn(Logger.getAnonymousLogger());
Mockito.when(server.getWorld("world")).thenReturn(world);
Mockito.when(server.getVersion()).thenReturn("BSB_Mocking");
- Bukkit.setServer(server);
- Mockito.when(Bukkit.getLogger()).thenReturn(Logger.getAnonymousLogger());
+
PluginManager pluginManager = mock(PluginManager.class);
- Mockito.when(server.getPluginManager()).thenReturn(pluginManager);
+ when(server.getPluginManager()).thenReturn(pluginManager);
+
+ ItemFactory itemFactory = mock(ItemFactory.class);
+ when(server.getItemFactory()).thenReturn(itemFactory);
+
+ Bukkit.setServer(server);
+
+ SkullMeta skullMeta = mock(SkullMeta.class);
+ ItemMeta itemMeta = mock(ItemMeta.class);
+ when(itemFactory.getItemMeta(any())).thenReturn(skullMeta);
+
+ OfflinePlayer offlinePlayer = mock(OfflinePlayer.class);
+ when(Bukkit.getOfflinePlayer(any(UUID.class))).thenReturn(offlinePlayer);
+ when(offlinePlayer.getName()).thenReturn("tastybento");
+ when(Bukkit.getItemFactory()).thenReturn(itemFactory);
+ when(Bukkit.getLogger()).thenReturn(Logger.getAnonymousLogger());
+ //when(Bukkit.getServer()).thenReturn(server);
+
sender = mock(CommandSender.class);
player = mock(Player.class);
ownerOfIsland = mock(Player.class);
@@ -124,11 +138,12 @@ public class TestBSkyBlock {
Mockito.when(visitorToIsland.getUniqueId()).thenReturn(VISITOR_UUID);
// Mock itemFactory for ItemStack
+ /*
ItemFactory itemFactory = PowerMockito.mock(ItemFactory.class);
PowerMockito.when(Bukkit.getItemFactory()).thenReturn(itemFactory);
ItemMeta itemMeta = PowerMockito.mock(ItemMeta.class);
PowerMockito.when(itemFactory.getItemMeta(Matchers.any())).thenReturn(itemMeta);
-
+ */
PowerMockito.mockStatic(Flags.class);
plugin = Mockito.mock(BSkyBlock.class);
diff --git a/src/test/java/us/tastybento/bskyblock/api/panels/builders/PanelItemBuilderTest.java b/src/test/java/us/tastybento/bskyblock/api/panels/builders/PanelItemBuilderTest.java
new file mode 100644
index 000000000..8c3d70ed5
--- /dev/null
+++ b/src/test/java/us/tastybento/bskyblock/api/panels/builders/PanelItemBuilderTest.java
@@ -0,0 +1,158 @@
+package us.tastybento.bskyblock.api.panels.builders;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+import java.util.logging.Logger;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.Server;
+import org.bukkit.World;
+import org.bukkit.inventory.ItemFactory;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.SkullMeta;
+import org.bukkit.plugin.PluginManager;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import us.tastybento.bskyblock.api.commands.User;
+import us.tastybento.bskyblock.api.panels.ClickType;
+import us.tastybento.bskyblock.api.panels.PanelItem;
+
+@RunWith(PowerMockRunner.class)
+public class PanelItemBuilderTest {
+
+ private static PanelItemBuilder builder;
+
+ @SuppressWarnings("deprecation")
+ @BeforeClass
+ public static void setUp() throws Exception {
+ builder = new PanelItemBuilder();
+ Server server = mock(Server.class);
+ World world = mock(World.class);
+ world = mock(World.class);
+ Mockito.when(server.getLogger()).thenReturn(Logger.getAnonymousLogger());
+ Mockito.when(server.getWorld("world")).thenReturn(world);
+ Mockito.when(server.getVersion()).thenReturn("BSB_Mocking");
+
+ PluginManager pluginManager = mock(PluginManager.class);
+ when(server.getPluginManager()).thenReturn(pluginManager);
+
+ ItemFactory itemFactory = mock(ItemFactory.class);
+ when(server.getItemFactory()).thenReturn(itemFactory);
+
+ Bukkit.setServer(server);
+
+ SkullMeta skullMeta = mock(SkullMeta.class);
+ when(skullMeta.getOwner()).thenReturn("tastybento");
+ when(itemFactory.getItemMeta(any())).thenReturn(skullMeta);
+
+ OfflinePlayer offlinePlayer = mock(OfflinePlayer.class);
+ when(Bukkit.getOfflinePlayer(any(UUID.class))).thenReturn(offlinePlayer);
+ when(offlinePlayer.getName()).thenReturn("tastybento");
+
+ when(Bukkit.getItemFactory()).thenReturn(itemFactory);
+ when(Bukkit.getLogger()).thenReturn(Logger.getAnonymousLogger());
+ //when(Bukkit.getServer()).thenReturn(server);
+ }
+
+ @Test
+ public void testIconMaterial() {
+ builder.icon(Material.STONE);
+ PanelItem item = builder.build();
+ assertNotNull(item.getItem().getType());
+ assertEquals(Material.STONE, item.getItem().getType());
+ }
+
+ @Test
+ public void testIconItemStack() {
+ builder.icon(new ItemStack(Material.IRON_ORE));
+ PanelItem item = builder.build();
+ assertNotNull(item.getItem().getType());
+ assertEquals(Material.IRON_ORE, item.getItem().getType());
+ }
+
+ @Test
+ public void testIconUUID() {
+ builder.icon(UUID.fromString("5988eecd-1dcd-4080-a843-785b62419"));
+ PanelItem item = builder.build();
+ assertNotNull(item.getItem().getType());
+ assertEquals(Material.SKULL_ITEM, item.getItem().getType());
+ }
+
+ @SuppressWarnings("deprecation")
+ @Test
+ public void testIconString() {
+ builder.icon("tastybento");
+ PanelItem item = builder.build();
+ assertNotNull(item.getItem().getType());
+ SkullMeta skullMeta = (SkullMeta)item.getItem().getItemMeta();
+ assertEquals("tastybento",skullMeta.getOwner());
+ assertEquals(Material.SKULL_ITEM, item.getItem().getType());
+ }
+
+ @Test
+ public void testName() {
+ builder.name("test");
+ PanelItem item = builder.build();
+ assertEquals("test",item.getName());
+ }
+
+ @Test
+ public void testDescriptionListOfString() {
+ List test = Arrays.asList("test line 1", "test line 2");
+ builder.description(test);
+ PanelItem item = builder.build();
+ assertEquals(test, item.getDescription());
+ }
+
+ @Test
+ public void testDescriptionStringArray() {
+ List test = Arrays.asList("test line 1", "test line 2", "test line 3", "test line 4");
+ builder.description("test line 3", "test line 4");
+ PanelItem item = builder.build();
+ assertEquals(test, item.getDescription());
+ }
+
+ @Test
+ public void testDescriptionString() {
+ List test = Arrays.asList("test line 1", "test line 2", "test line 3", "test line 4", "test line 5");
+ builder.description("test line 5");
+ PanelItem item = builder.build();
+ assertEquals(test, item.getDescription());
+ }
+
+ @Test
+ public void testClickHandler() {
+ // Test without click handler
+ PanelItem item = builder.clickHandler(null).build();
+ assertFalse(item.getClickHandler().isPresent());
+
+ item = builder.clickHandler(new Clicker()).build();
+ assertTrue(item.getClickHandler().isPresent());
+ assertTrue(item.getClickHandler().map(x -> x.onClick(null, ClickType.LEFT)).orElse(false));
+ }
+
+ public class Clicker implements PanelItem.ClickHandler {
+
+ @Override
+ public boolean onClick(User user, ClickType click) {
+
+ return true;
+ }
+
+ }
+}