package com.jcwhatever.nucleus.views.chest; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import com.jcwhatever.v1_8_R3.BukkitTester; import com.jcwhatever.nucleus.views.View; import com.jcwhatever.nucleus.views.ViewOpenReason; import com.jcwhatever.nucleus.views.AbstractViewTest; import org.bukkit.block.Block; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryAction; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.InventoryType.SlotType; import org.bukkit.plugin.Plugin; import org.junit.Test; import javax.annotation.Nullable; /** * Test for {@link ChestView} using mock implementation {@link MockChestView}. * * <p>More tests are performed by the super class {@link AbstractViewTest}.</p> */ public class ChestViewTest extends AbstractViewTest { public ChestViewTest() { super(new IViewGenerator() { @Override public View generate(Plugin plugin) { return new MockChestView(plugin, null); } }); } /** * Make sure the "onShow" method is invoked. */ @Test public void testOnShow() { MockChestView view = new MockChestView(plugin, null); _session.next(view); BukkitTester.pause(2); // check that "onShow" was invoked. assertEquals(ViewOpenReason.FIRST, view.openReason); } /** * Make sure the "onItemsPickup" method is invoked when * items are picked up in the inventory view. */ @Test public void testOnItemsPickup() { MockChestView view = new MockChestView(plugin, null); _session.next(view); BukkitTester.pause(2); BukkitTester.viewClick(player, SlotType.CONTAINER, 0, ClickType.LEFT, InventoryAction.PICKUP_ALL); BukkitTester.pause(2); // check "onItemsPickup" is invoked assertTrue(view.itemsPickup != null); } /** * Make sure the "onItemsPlaced" method is invoked when * items are placed in the inventory view. */ @Test public void testOnItemsPlaced() { MockChestView view = new MockChestView(plugin, null); _session.next(view); BukkitTester.pause(2); BukkitTester.viewClick(player, SlotType.CONTAINER, 0, ClickType.LEFT, InventoryAction.PLACE_ALL); BukkitTester.pause(2); // check "onItemsPlaced" is invoked assertTrue(view.itemsPlaced != null); } /** * Make sure the "onItemsDropped" method is invoked when * items are dropped from the inventory view. */ @Test public void testOnItemsDropped() { MockChestView view = new MockChestView(plugin, null); _session.next(view); BukkitTester.pause(2); BukkitTester.viewClick(player, SlotType.CONTAINER, 0, ClickType.LEFT, InventoryAction.DROP_ALL_CURSOR); BukkitTester.pause(2); // check "onItemsDropped" is invoked assertTrue(view.itemsDropped != null); } /** * Make sure the correct inventory type is returned. */ @Test public void testGetInventoryType() throws Exception { MockChestView view = new MockChestView(BukkitTester.mockPlugin("dummy"), null); assertEquals(InventoryType.CHEST, view.getInventoryType()); } @Nullable @Override protected Block getSourceBlock() { return null; } }