package me.gnat008.perworldinventory.commands; import com.onarandombox.multiverseinventories.MultiverseInventories; import me.gnat008.perworldinventory.data.converters.DataConverter; import org.bukkit.command.CommandSender; import org.bukkit.plugin.PluginManager; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import uk.co.tggl.pluckerpluck.multiinv.MultiInv; import java.util.ArrayList; import java.util.Collections; import java.util.List; import static org.hamcrest.Matchers.containsString; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.only; import static org.mockito.Mockito.verify; import static org.mockito.hamcrest.MockitoHamcrest.argThat; /** * Test for {@link ConvertCommand}. */ @RunWith(MockitoJUnitRunner.class) public class ConvertCommandTest { @InjectMocks private ConvertCommand command; @Mock private PluginManager pluginManager; @Mock private DataConverter dataConverter; @Test public void shouldNotExecuteNotEnoughArgs() { // given CommandSender sender = mock(CommandSender.class); // when command.executeCommand(sender, Collections.<String>emptyList()); // then verify(sender).sendMessage(argThat(containsString("Incorrect usage"))); } @Test public void shouldNotExecuteTooManyArgs() { // given CommandSender sender = mock(CommandSender.class); List<String> args = new ArrayList<>(); args.add("1"); args.add("2"); // when command.executeCommand(sender, args); // then verify(sender).sendMessage(argThat(containsString("Incorrect usage"))); } @Test public void shouldNotExecuteWrongArgs() { // given CommandSender sender = mock(CommandSender.class); List<String> args = new ArrayList<>(); args.add("1"); // when command.executeCommand(sender, args); // then verify(sender).sendMessage(argThat(containsString("Invalid argument"))); } @Test public void shouldExecuteMultiverseConversion() { // given CommandSender sender = mock(CommandSender.class); List<String> args = Collections.singletonList("multiverse"); MultiverseInventories mvi = mock(MultiverseInventories.class); given(pluginManager.getPlugin("Multiverse-Inventories")).willReturn(mvi); given(pluginManager.isPluginEnabled("Multiverse-Inventories")).willReturn(true); // when command.executeCommand(sender, args); // then verify(sender).sendMessage(argThat(containsString("Converting from Multiverse-Inventories"))); verify(dataConverter, only()).convertMultiVerseData(); } @Test public void shouldExecuteMultiInvConversion() { // given CommandSender sender = mock(CommandSender.class); List<String> args = Collections.singletonList("multiinv"); MultiInv multiInv = mock(MultiInv.class); given(pluginManager.getPlugin("MultiInv")).willReturn(multiInv); given(pluginManager.isPluginEnabled("MultiInv")).willReturn(true); // when command.executeCommand(sender, args); // then verify(sender).sendMessage(argThat(containsString("Converting from MultiInv is unsupported"))); } }