tastybento 2020-03-05 16:47:52 -08:00
parent 669986b422
commit 30d9ed3887
2 changed files with 61 additions and 35 deletions

View File

@ -57,7 +57,7 @@ public class AdminTeamDisbandCommand extends CompositeCommand {
TeamEvent.builder()
.island(island)
.reason(TeamEvent.Reason.KICK)
.involvedPlayer(targetUUID)
.involvedPlayer(m)
.admin(true)
.build();
}

View File

@ -2,7 +2,12 @@ package world.bentobox.bentobox.api.commands.admin.team;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.framework;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
@ -22,7 +27,8 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.Mock;
import org.mockito.stubbing.Answer;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@ -37,6 +43,7 @@ import world.bentobox.bentobox.managers.CommandsManager;
import world.bentobox.bentobox.managers.IslandWorldManager;
import world.bentobox.bentobox.managers.IslandsManager;
import world.bentobox.bentobox.managers.LocalesManager;
import world.bentobox.bentobox.managers.PlaceholdersManager;
import world.bentobox.bentobox.managers.PlayersManager;
/**
@ -47,11 +54,21 @@ import world.bentobox.bentobox.managers.PlayersManager;
@PrepareForTest({Bukkit.class, BentoBox.class, User.class })
public class AdminTeamDisbandCommandTest {
@Mock
private CompositeCommand ac;
private UUID uuid;
@Mock
private User user;
@Mock
private Player p;
@Mock
private Player p2;
@Mock
private IslandsManager im;
@Mock
private PlayersManager pm;
@Mock
private PluginManager pim;
private UUID notUUID;
/**
@ -68,9 +85,7 @@ public class AdminTeamDisbandCommandTest {
when(plugin.getCommandsManager()).thenReturn(cm);
// Player
Player p = mock(Player.class);
// Sometimes use Mockito.withSettings().verboseLogging()
user = mock(User.class);
// Sometimes use withSettings().verboseLogging()
when(user.isOp()).thenReturn(false);
uuid = UUID.randomUUID();
notUUID = UUID.randomUUID();
@ -81,6 +96,11 @@ public class AdminTeamDisbandCommandTest {
when(user.getPlayer()).thenReturn(p);
when(user.getName()).thenReturn("tastybento");
User.setPlugin(plugin);
// Set up users
when(p.getUniqueId()).thenReturn(uuid);
when(p2.getUniqueId()).thenReturn(notUUID);
User.getInstance(p);
User.getInstance(p2);
// Parent command has no aliases
ac = mock(CompositeCommand.class);
@ -93,15 +113,15 @@ public class AdminTeamDisbandCommandTest {
// Player has island to begin with
im = mock(IslandsManager.class);
when(im.hasIsland(Mockito.any(), Mockito.any(UUID.class))).thenReturn(true);
when(im.hasIsland(Mockito.any(), Mockito.any(User.class))).thenReturn(true);
when(im.isOwner(Mockito.any(),Mockito.any())).thenReturn(true);
when(im.getOwner(Mockito.any(),Mockito.any())).thenReturn(uuid);
when(im.hasIsland(any(), any(UUID.class))).thenReturn(true);
when(im.hasIsland(any(), any(User.class))).thenReturn(true);
when(im.isOwner(any(),any())).thenReturn(true);
when(im.getOwner(any(),any())).thenReturn(uuid);
when(plugin.getIslands()).thenReturn(im);
// Has team
pm = mock(PlayersManager.class);
when(im.inTeam(Mockito.any(), Mockito.eq(uuid))).thenReturn(true);
when(im.inTeam(any(), eq(uuid))).thenReturn(true);
when(plugin.getPlayers()).thenReturn(pm);
@ -111,23 +131,26 @@ public class AdminTeamDisbandCommandTest {
when(Bukkit.getScheduler()).thenReturn(sch);
when(Bukkit.getPluginManager()).thenReturn(mock(PluginManager.class));
// Locales
// Locales & Placeholders
LocalesManager lm = mock(LocalesManager.class);
when(lm.get(Mockito.any(), Mockito.any())).thenReturn("mock translation");
when(lm.get(any(), any())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(1, String.class));
PlaceholdersManager phm = mock(PlaceholdersManager.class);
when(plugin.getPlaceholdersManager()).thenReturn(phm);
when(phm.replacePlaceholders(any(), any())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(1, String.class));
when(plugin.getLocalesManager()).thenReturn(lm);
// Addon
when(iwm.getAddon(Mockito.any())).thenReturn(Optional.empty());
when(iwm.getAddon(any())).thenReturn(Optional.empty());
// Plugin Manager
PluginManager pim = mock(PluginManager.class);
when(Bukkit.getPluginManager()).thenReturn(pim);
}
@After
public void tearDown() {
User.clearUsers();
Mockito.framework().clearInlineMocks();
framework().clearInlineMocks();
}
/**
@ -146,9 +169,9 @@ public class AdminTeamDisbandCommandTest {
public void testExecuteUnknownPlayer() {
AdminTeamDisbandCommand itl = new AdminTeamDisbandCommand(ac);
String[] name = {"tastybento"};
when(pm.getUUID(Mockito.any())).thenReturn(null);
when(pm.getUUID(any())).thenReturn(null);
assertFalse(itl.execute(user, itl.getLabel(), Arrays.asList(name)));
Mockito.verify(user).sendMessage("general.errors.unknown-player", "[name]", name[0]);
verify(user).sendMessage("general.errors.unknown-player", "[name]", name[0]);
}
/**
@ -158,10 +181,10 @@ public class AdminTeamDisbandCommandTest {
public void testExecutePlayerNotInTeam() {
AdminTeamDisbandCommand itl = new AdminTeamDisbandCommand(ac);
String[] name = {"tastybento"};
when(pm.getUUID(Mockito.any())).thenReturn(notUUID);
when(im.getMembers(Mockito.any(), Mockito.any())).thenReturn(new HashSet<>());
when(pm.getUUID(any())).thenReturn(notUUID);
when(im.getMembers(any(), any())).thenReturn(new HashSet<>());
assertFalse(itl.execute(user, itl.getLabel(), Arrays.asList(name)));
Mockito.verify(user).sendMessage(Mockito.eq("general.errors.not-in-team"));
verify(user).sendMessage(eq("general.errors.not-in-team"));
}
/**
@ -169,18 +192,18 @@ public class AdminTeamDisbandCommandTest {
*/
@Test
public void testExecuteDisbandNotOwner() {
when(im.inTeam(Mockito.any(), Mockito.any())).thenReturn(true);
when(im.inTeam(any(), any())).thenReturn(true);
Island is = mock(Island.class);
when(im.getIsland(Mockito.any(), Mockito.any(UUID.class))).thenReturn(is);
when(im.getIsland(any(), any(UUID.class))).thenReturn(is);
String[] name = {"tastybento"};
when(pm.getUUID(Mockito.any())).thenReturn(notUUID);
when(pm.getUUID(any())).thenReturn(notUUID);
when(im.getOwner(Mockito.any(), Mockito.eq(notUUID))).thenReturn(uuid);
when(pm.getName(Mockito.any())).thenReturn("owner");
when(im.getOwner(any(), eq(notUUID))).thenReturn(uuid);
when(pm.getName(any())).thenReturn("owner");
AdminTeamDisbandCommand itl = new AdminTeamDisbandCommand(ac);
assertFalse(itl.execute(user, itl.getLabel(), Arrays.asList(name)));
Mockito.verify(user).sendMessage("commands.admin.team.disband.use-disband-owner", "[owner]", "owner");
verify(user).sendMessage("commands.admin.team.disband.use-disband-owner", "[owner]", "owner");
}
/**
@ -188,24 +211,27 @@ public class AdminTeamDisbandCommandTest {
*/
@Test
public void testExecuteSuccess() {
when(im.inTeam(Mockito.any(), Mockito.any())).thenReturn(true);
when(im.inTeam(any(), any())).thenReturn(true);
Island is = mock(Island.class);
when(im.getIsland(Mockito.any(), Mockito.any(UUID.class))).thenReturn(is);
when(im.getIsland(any(), any(UUID.class))).thenReturn(is);
String[] name = {"tastybento"};
when(pm.getUUID(Mockito.any())).thenReturn(notUUID);
when(pm.getName(Mockito.any())).thenReturn(name[0]);
when(pm.getUUID(any())).thenReturn(notUUID);
when(pm.getName(any())).thenReturn(name[0]);
// Owner
when(im.getOwner(Mockito.any(), Mockito.eq(notUUID))).thenReturn(notUUID);
when(im.getOwner(any(), eq(notUUID))).thenReturn(notUUID);
// Members
Set<UUID> members = new HashSet<>();
members.add(uuid);
members.add(notUUID);
when(im.getMembers(Mockito.any(), Mockito.any())).thenReturn(members);
when(im.getMembers(any(), any())).thenReturn(members);
AdminTeamDisbandCommand itl = new AdminTeamDisbandCommand(ac);
assertTrue(itl.execute(user, itl.getLabel(), Arrays.asList(name)));
Mockito.verify(im, Mockito.never()).setLeaveTeam(Mockito.any(), Mockito.eq(notUUID));
Mockito.verify(im).setLeaveTeam(Mockito.any(), Mockito.eq(uuid));
Mockito.verify(user).sendMessage("commands.admin.team.disband.success", TextVariables.NAME, name[0]);
verify(im, never()).setLeaveTeam(any(), eq(notUUID));
verify(im).setLeaveTeam(any(), eq(uuid));
verify(user).sendMessage("commands.admin.team.disband.success", TextVariables.NAME, name[0]);
verify(p).sendMessage("commands.admin.team.disband.disbanded");
verify(p2).sendMessage("commands.admin.team.disband.disbanded");
verify(pim).callEvent(any());
}
}