From 59124cfa8ac7f72fda9a88ad3cd7f1f1b81e54ca Mon Sep 17 00:00:00 2001 From: tastybento Date: Fri, 23 Feb 2024 21:51:17 -0800 Subject: [PATCH] Fix NPE with unregister command --- .../admin/AdminUnregisterCommand.java | 6 +++++- .../admin/AdminUnregisterCommandTest.java | 20 ++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminUnregisterCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminUnregisterCommand.java index 4d074631e..968ebf178 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminUnregisterCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminUnregisterCommand.java @@ -73,6 +73,10 @@ public class AdminUnregisterCommand extends ConfirmableCommand { user.sendMessage("commands.admin.unregister.errors.specify-island-location"); return false; } else if (!islands.containsKey(args.get(1))) { + if (args.get(1).equalsIgnoreCase("help")) { + this.showHelp(this, user); + return false; + } user.sendMessage("commands.admin.unregister.errors.unknown-island-location"); return false; } @@ -126,7 +130,7 @@ public class AdminUnregisterCommand extends ConfirmableCommand { } else if (args.size() == 2) { List options = new ArrayList<>(Util.getOnlinePlayerList(user)); return Optional.of(Util.tabLimit(options, lastArg)); - } else { + } else if (args.size() > 2) { // Find out which user UUID uuid = getPlayers().getUUID(args.get(1)); if (uuid != null) { diff --git a/src/test/java/world/bentobox/bentobox/api/commands/admin/AdminUnregisterCommandTest.java b/src/test/java/world/bentobox/bentobox/api/commands/admin/AdminUnregisterCommandTest.java index c5197dab4..8f4aaeb75 100644 --- a/src/test/java/world/bentobox/bentobox/api/commands/admin/AdminUnregisterCommandTest.java +++ b/src/test/java/world/bentobox/bentobox/api/commands/admin/AdminUnregisterCommandTest.java @@ -240,16 +240,16 @@ public class AdminUnregisterCommandTest { * {@link AdminUnregisterCommand#canExecute(User, String, java.util.List)}. */ @Test - public void testExecutePlayerSuccessMultiIsland() { + public void testCanExecutePlayerSuccessMultiIsland() { assertTrue(itl.canExecute(user, itl.getLabel(), List.of("tastybento", "1,2,3"))); assertTrue(itl.canExecute(user, itl.getLabel(), List.of("tastybento", "4,5,6"))); } /** - * Test method for {@link AdminUnregisterCommand#execute(User, String, java.util.List)}. + * Test method for {@link AdminUnregisterCommand#canExecute(User, String, java.util.List)}. */ @Test - public void testExecuteSuccessOneIsland() { + public void testCanExecuteSuccessOneIsland() { when(im.getOwnedIslands(world, uuid)).thenReturn(Set.of(island)); itl.canExecute(user, itl.getLabel(), List.of("tastybento")); assertTrue(itl.execute(user, itl.getLabel(), List.of("tastybento"))); @@ -262,7 +262,7 @@ public class AdminUnregisterCommandTest { */ @Test public void testUnregisterIsland() { - this.testExecuteSuccessOneIsland(); + this.testCanExecuteSuccessOneIsland(); itl.unregisterIsland(user); verify(user).sendMessage("commands.admin.unregister.unregistered-island", TextVariables.XYZ, "1,2,3", TextVariables.NAME, "name"); @@ -274,9 +274,19 @@ public class AdminUnregisterCommandTest { */ @Test public void testUnregisterIslandMulti() { - this.testExecutePlayerSuccessMultiIsland(); + this.testCanExecutePlayerSuccessMultiIsland(); itl.unregisterIsland(user); verify(user).sendMessage("commands.admin.unregister.unregistered-island", TextVariables.XYZ, "4,5,6", TextVariables.NAME, "name"); } + + /** + * Test method for + * {@link AdminUnregisterCommand#canExecute(User, String, java.util.List)}. + */ + @Test + public void testCanExecuteHelp() { + assertFalse(itl.canExecute(user, itl.getLabel(), List.of("tastybento", "help"))); + verify(user).sendMessage("commands.help.header", TextVariables.LABEL, null); + } }