diff --git a/src/mineverse/Aust1n46/chat/command/mute/Mute.java b/src/mineverse/Aust1n46/chat/command/mute/Mute.java index 3836da6..7ff6313 100644 --- a/src/mineverse/Aust1n46/chat/command/mute/Mute.java +++ b/src/mineverse/Aust1n46/chat/command/mute/Mute.java @@ -128,12 +128,17 @@ public class Mute extends MineverseCommand { return completions; } if(args.length == 2) { - if(ChatChannel.isChannel(args[0]) && ChatChannel.getChannel(args[0]).getBungee()) { - StringUtil.copyPartialMatches(args[1], MineverseChat.networkPlayerNames, completions); + if(ChatChannel.isChannel(args[0])) { + ChatChannel chatChannelObj = ChatChannel.getChannel(args[0]); + if(chatChannelObj.getBungee()) { + StringUtil.copyPartialMatches(args[1], MineverseChat.networkPlayerNames, completions); + Collections.sort(completions); + return completions; + } + StringUtil.copyPartialMatches(args[1], MineverseChatAPI.getOnlineMineverseChatPlayers().stream().filter(mcp -> !mcp.isMuted(chatChannelObj.getName())).map(MineverseChatPlayer::getName).collect(Collectors.toList()), completions); Collections.sort(completions); return completions; } - return null; } if(args.length == 3) { StringUtil.copyPartialMatches(args[2], COMMON_MUTE_TIMES, completions); diff --git a/src/mineverse/Aust1n46/chat/command/mute/Unmute.java b/src/mineverse/Aust1n46/chat/command/mute/Unmute.java index 289d326..6461a8d 100644 --- a/src/mineverse/Aust1n46/chat/command/mute/Unmute.java +++ b/src/mineverse/Aust1n46/chat/command/mute/Unmute.java @@ -81,12 +81,17 @@ public class Unmute extends MineverseCommand { return completions; } if(args.length == 2) { - if(ChatChannel.isChannel(args[0]) && ChatChannel.getChannel(args[0]).getBungee()) { - StringUtil.copyPartialMatches(args[1], MineverseChat.networkPlayerNames, completions); + if(ChatChannel.isChannel(args[0])) { + ChatChannel chatChannelObj = ChatChannel.getChannel(args[0]); + if(chatChannelObj.getBungee()) { + StringUtil.copyPartialMatches(args[1], MineverseChat.networkPlayerNames, completions); + Collections.sort(completions); + return completions; + } + StringUtil.copyPartialMatches(args[1], MineverseChatAPI.getOnlineMineverseChatPlayers().stream().filter(mcp -> mcp.isMuted(chatChannelObj.getName())).map(MineverseChatPlayer::getName).collect(Collectors.toList()), completions); Collections.sort(completions); return completions; } - return null; } return Collections.emptyList(); } diff --git a/test/mineverse/Aust1n46/chat/listeners/LoginListenerTest.java b/test/mineverse/Aust1n46/chat/listeners/LoginListenerTest.java new file mode 100644 index 0000000..08ee786 --- /dev/null +++ b/test/mineverse/Aust1n46/chat/listeners/LoginListenerTest.java @@ -0,0 +1,62 @@ +package mineverse.Aust1n46.chat.listeners; + +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +import mineverse.Aust1n46.chat.MineverseChat; +import mineverse.Aust1n46.chat.api.MineverseChatAPI; +import mineverse.Aust1n46.chat.api.MineverseChatPlayer; +import mineverse.Aust1n46.chat.listeners.LoginListener;; + +/** + * Tests {@link LoginListener}. + */ +@RunWith(PowerMockRunner.class) +@PrepareForTest({ MineverseChat.class, MineverseChatAPI.class, Bukkit.class}) +public class LoginListenerTest { + private MineverseChat mockPlugin; + private Player mockPlayer; + private MineverseChatPlayer mockMCP; + private ConsoleCommandSender mockConsoleSender; + + @Before + public void setUp() { + mockPlugin = Mockito.mock(MineverseChat.class); + mockPlayer = Mockito.mock(Player.class); + mockMCP = Mockito.mock(MineverseChatPlayer.class); + mockConsoleSender = Mockito.mock(ConsoleCommandSender.class); + + PowerMockito.mockStatic(MineverseChat.class); + PowerMockito.when(MineverseChat.getInstance()).thenReturn(mockPlugin); + + PowerMockito.mockStatic(MineverseChatAPI.class); + PowerMockito.when(MineverseChatAPI.getMineverseChatPlayer(Mockito.any(Player.class))).thenReturn(mockMCP); + + PowerMockito.mockStatic(Bukkit.class); + PowerMockito.when(Bukkit.getConsoleSender()).thenReturn(mockConsoleSender); + } + + @After + public void tearDown() { + mockPlugin = null; + } + + @Test + public void testLoginWithNameChange() throws Exception { + Mockito.when(mockPlayer.getName()).thenReturn("NewName"); + Mockito.when(mockMCP.getName()).thenReturn("OldName"); + Mockito.when(mockPlayer.getDisplayName()).thenReturn("OldName"); + LoginListener testLoginListener = new LoginListener(); + testLoginListener.handleNameChange(mockMCP, mockPlayer); + Mockito.verify(mockMCP, Mockito.times(1)).setNickname("NewName"); + } +}