mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2025-02-07 07:51:41 +01:00
Added BlueprintManagementPanel test class
This commit is contained in:
parent
f9a5f05987
commit
49d8cd8791
@ -0,0 +1,209 @@
|
||||
package world.bentobox.bentobox.panels;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemFactory;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.stubbing.Answer;
|
||||
import org.powermock.api.mockito.PowerMockito;
|
||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||
import org.powermock.modules.junit4.PowerMockRunner;
|
||||
import org.powermock.reflect.Whitebox;
|
||||
|
||||
import world.bentobox.bentobox.BentoBox;
|
||||
import world.bentobox.bentobox.api.addons.GameModeAddon;
|
||||
import world.bentobox.bentobox.api.panels.PanelItem;
|
||||
import world.bentobox.bentobox.api.user.User;
|
||||
import world.bentobox.bentobox.blueprints.Blueprint;
|
||||
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle;
|
||||
import world.bentobox.bentobox.managers.BlueprintsManager;
|
||||
|
||||
/**
|
||||
* @author tastybento
|
||||
*
|
||||
*/
|
||||
@RunWith(PowerMockRunner.class)
|
||||
@PrepareForTest({Bukkit.class, BentoBox.class})
|
||||
public class BlueprintManagementPanelTest {
|
||||
|
||||
@Mock
|
||||
private BentoBox plugin;
|
||||
@Mock
|
||||
private User user;
|
||||
@Mock
|
||||
private GameModeAddon addon;
|
||||
@Mock
|
||||
BlueprintBundle bb;
|
||||
@Mock
|
||||
BlueprintBundle bb2;
|
||||
@Mock
|
||||
BlueprintBundle bb3;
|
||||
|
||||
private BlueprintManagementPanel bmp;
|
||||
@Mock
|
||||
private BlueprintsManager bpm;
|
||||
@Mock
|
||||
private Inventory inv;
|
||||
@Mock
|
||||
private Blueprint blueprint;
|
||||
|
||||
/**
|
||||
* @throws java.lang.Exception
|
||||
*/
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
// Set up plugin
|
||||
Whitebox.setInternalState(BentoBox.class, "instance", plugin);
|
||||
// Bukkit
|
||||
PowerMockito.mockStatic(Bukkit.class);
|
||||
ItemFactory itemFac = mock(ItemFactory.class);
|
||||
when(Bukkit.getItemFactory()).thenReturn(itemFac);
|
||||
// Panel inventory
|
||||
when(Bukkit.createInventory(any(), Mockito.anyInt(), any())).thenReturn(inv);
|
||||
|
||||
// Player
|
||||
Player player = mock(Player.class);
|
||||
when(user.isOp()).thenReturn(false);
|
||||
when(user.isPlayer()).thenReturn(true);
|
||||
UUID uuid = UUID.randomUUID();
|
||||
when(user.getUniqueId()).thenReturn(uuid);
|
||||
when(user.getPlayer()).thenReturn(player);
|
||||
when(user.hasPermission(anyString())).thenReturn(true);
|
||||
when(user.getTranslation(any())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(0, String.class));
|
||||
User.setPlugin(plugin);
|
||||
// Set up user already
|
||||
User.getInstance(player);
|
||||
// Bundles manager
|
||||
when(plugin.getBlueprintsManager()).thenReturn(bpm);
|
||||
// Bundles
|
||||
Map<String, BlueprintBundle> map = new HashMap<>();
|
||||
when(bb.getUniqueId()).thenReturn("test");
|
||||
when(bb.getDisplayName()).thenReturn("test");
|
||||
when(bb.getIcon()).thenReturn(Material.STONE);
|
||||
when(bb.getDescription()).thenReturn(Collections.singletonList("A description"));
|
||||
when(bb.getSlot()).thenReturn(5);
|
||||
// Too small slot for panel
|
||||
when(bb2.getUniqueId()).thenReturn("test2");
|
||||
when(bb2.getDisplayName()).thenReturn("test2");
|
||||
when(bb2.getIcon()).thenReturn(Material.ACACIA_BOAT);
|
||||
when(bb2.getDescription()).thenReturn(Collections.singletonList("A description 2"));
|
||||
when(bb2.getSlot()).thenReturn(-5);
|
||||
// Too large slot for panel
|
||||
when(bb3.getUniqueId()).thenReturn("test3");
|
||||
when(bb3.getDisplayName()).thenReturn("test3");
|
||||
when(bb3.getIcon()).thenReturn(Material.BAKED_POTATO);
|
||||
when(bb3.getDescription()).thenReturn(Collections.singletonList("A description 3"));
|
||||
when(bb3.getSlot()).thenReturn(65);
|
||||
|
||||
map.put("test", bb);
|
||||
map.put("test2", bb2);
|
||||
map.put("test3", bb3);
|
||||
when(bpm.getBlueprintBundles(any())).thenReturn(map);
|
||||
|
||||
// Blueprint
|
||||
when(blueprint.getName()).thenReturn("blueprint name");
|
||||
|
||||
|
||||
// Set up
|
||||
bmp = new BlueprintManagementPanel(plugin, user, addon);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws java.lang.Exception
|
||||
*/
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
User.clearUsers();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link world.bentobox.bentobox.panels.BlueprintManagementPanel#openPanel()}.
|
||||
*/
|
||||
@Test
|
||||
public void testOpenPanel() {
|
||||
bmp.openPanel();
|
||||
verify(bpm).getBlueprintBundles(addon);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link world.bentobox.bentobox.panels.BlueprintManagementPanel#openBB(world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle)}.
|
||||
*/
|
||||
@Test
|
||||
public void testOpenBB() {
|
||||
bmp.openBB(bb);
|
||||
verify(bb).getDisplayName();
|
||||
verify(bb, times(3)).getBlueprint(any());
|
||||
verify(inv, times(20)).setItem(anyInt(), any());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link world.bentobox.bentobox.panels.BlueprintManagementPanel#getBundleIcon(world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle)}.
|
||||
*/
|
||||
@Test
|
||||
public void testGetBundleIcon() {
|
||||
PanelItem pi = bmp.getBundleIcon(bb);
|
||||
assertEquals("commands.admin.blueprint.management.edit-description", pi.getName());
|
||||
assertEquals(Material.STONE, pi.getItem().getType());
|
||||
assertEquals("A description", pi.getDescription().get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link world.bentobox.bentobox.panels.BlueprintManagementPanel#getBlueprintItem(world.bentobox.bentobox.api.addons.GameModeAddon, int, world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle, world.bentobox.bentobox.blueprints.Blueprint)}.
|
||||
*/
|
||||
@Test
|
||||
public void testGetBlueprintItem() {
|
||||
PanelItem pi = bmp.getBlueprintItem(addon, 0, bb, blueprint);
|
||||
assertEquals("blueprint name", pi.getName());
|
||||
assertEquals(Material.PAPER, pi.getItem().getType());
|
||||
assertEquals("commands.admin.blueprint.management.blueprint-instruction", pi.getDescription().get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link world.bentobox.bentobox.panels.BlueprintManagementPanel#getBlueprintItem(world.bentobox.bentobox.api.addons.GameModeAddon, int, world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle, world.bentobox.bentobox.blueprints.Blueprint)}.
|
||||
*/
|
||||
@Test
|
||||
public void testGetBlueprintItemWithDisplayNameAndIcon() {
|
||||
when(blueprint.getDisplayName()).thenReturn("Display Name");
|
||||
when(blueprint.getIcon()).thenReturn(Material.BEACON);
|
||||
PanelItem pi = bmp.getBlueprintItem(addon, 0, bb, blueprint);
|
||||
assertEquals("Display Name", pi.getName());
|
||||
assertEquals(Material.BEACON, pi.getItem().getType());
|
||||
assertEquals("commands.admin.blueprint.management.blueprint-instruction", pi.getDescription().get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link world.bentobox.bentobox.panels.BlueprintManagementPanel#getBlueprintItem(world.bentobox.bentobox.api.addons.GameModeAddon, int, world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle, world.bentobox.bentobox.blueprints.Blueprint)}.
|
||||
*/
|
||||
@Test
|
||||
public void testGetBlueprintItemWithDisplayNameAndIconInWorldSlot() {
|
||||
when(blueprint.getDisplayName()).thenReturn("Display Name");
|
||||
when(blueprint.getIcon()).thenReturn(Material.BEACON);
|
||||
PanelItem pi = bmp.getBlueprintItem(addon, 5, bb, blueprint);
|
||||
assertEquals("Display Name", pi.getName());
|
||||
assertEquals(Material.BEACON, pi.getItem().getType());
|
||||
assertEquals("commands.admin.blueprint.management.remove", pi.getDescription().get(0));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user