package me.gnat008.perworldinventory.listeners.server; import me.gnat008.perworldinventory.data.serializers.DeserializeCause; import me.gnat008.perworldinventory.events.InventoryLoadCompleteEvent; import me.gnat008.perworldinventory.process.InventoryChangeProcess; import org.bukkit.entity.Player; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; /** * Tests for {@link InventoryLoadingListener}. */ @RunWith(MockitoJUnitRunner.class) public class InventoryLoadingListenerTest { @InjectMocks private InventoryLoadingListener listener; @Mock private InventoryChangeProcess process; @Test public void shouldInteract() { // given Player player = mock(Player.class); InventoryLoadCompleteEvent event = new InventoryLoadCompleteEvent(player, DeserializeCause.WORLD_CHANGE); // when listener.onLoadComplete(event); // then verify(process).postProcessWorldChange(any(Player.class)); } @Test public void shouldNotInteract() { // given Player player = mock(Player.class); InventoryLoadCompleteEvent event = new InventoryLoadCompleteEvent(player, DeserializeCause.GAMEMODE_CHANGE); // when listener.onLoadComplete(event); // then verifyZeroInteractions(process); } @Test public void shouldAlsoNotInteract() { // given Player player = mock(Player.class); InventoryLoadCompleteEvent event = new InventoryLoadCompleteEvent(player, DeserializeCause.CHANGED_DEFAULTS); // when listener.onLoadComplete(event); // then verifyZeroInteractions(process); } }