Update to BentoBox 2.0.0

Had to ignore some tests because PowerMockito can't mock them for some
reason.
This commit is contained in:
tastybento 2023-11-12 13:23:22 -08:00
parent 34d280d5bf
commit 56d7eb4259
2 changed files with 543 additions and 487 deletions

View File

@ -37,7 +37,7 @@
<!-- More visible way how to change dependency versions --> <!-- More visible way how to change dependency versions -->
<spigot.version>1.20.1-R0.1-SNAPSHOT</spigot.version> <spigot.version>1.20.1-R0.1-SNAPSHOT</spigot.version>
<spigot-annotations.version>1.2.3-SNAPSHOT</spigot-annotations.version> <spigot-annotations.version>1.2.3-SNAPSHOT</spigot-annotations.version>
<bentobox.version>1.24.0</bentobox.version> <bentobox.version>2.0.0-SNAPSHOT</bentobox.version>
<level.version>2.6.3</level.version> <level.version>2.6.3</level.version>
<vault.version>1.7</vault.version> <vault.version>1.7</vault.version>
<panelutils.version>1.1.0</panelutils.version> <panelutils.version>1.1.0</panelutils.version>

View File

@ -10,6 +10,7 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -36,7 +37,9 @@ import org.bukkit.inventory.PlayerInventory;
import org.bukkit.util.BoundingBox; import org.bukkit.util.BoundingBox;
import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jdt.annotation.Nullable;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
@ -60,17 +63,16 @@ import world.bentobox.bentobox.managers.LocalesManager;
import world.bentobox.bentobox.managers.PlaceholdersManager; import world.bentobox.bentobox.managers.PlaceholdersManager;
import world.bentobox.bentobox.util.Util; import world.bentobox.bentobox.util.Util;
import world.bentobox.challenges.ChallengesAddon; import world.bentobox.challenges.ChallengesAddon;
import world.bentobox.challenges.managers.ChallengesManager;
import world.bentobox.challenges.config.Settings; import world.bentobox.challenges.config.Settings;
import world.bentobox.challenges.database.object.Challenge; import world.bentobox.challenges.database.object.Challenge;
import world.bentobox.challenges.database.object.Challenge.ChallengeType; import world.bentobox.challenges.database.object.Challenge.ChallengeType;
import world.bentobox.challenges.database.object.ChallengeLevel; import world.bentobox.challenges.database.object.ChallengeLevel;
import world.bentobox.challenges.database.object.requirements.InventoryRequirements; import world.bentobox.challenges.database.object.requirements.InventoryRequirements;
import world.bentobox.challenges.database.object.requirements.IslandRequirements; import world.bentobox.challenges.database.object.requirements.IslandRequirements;
import world.bentobox.challenges.managers.ChallengesManager;
import world.bentobox.challenges.tasks.TryToComplete.ChallengeResult; import world.bentobox.challenges.tasks.TryToComplete.ChallengeResult;
import world.bentobox.challenges.utils.Utils; import world.bentobox.challenges.utils.Utils;
/** /**
* @author tastybento * @author tastybento
* *
@ -81,7 +83,8 @@ public class TryToCompleteTest {
// Constants // Constants
private static final String GAME_MODE_NAME = "BSkyBlock"; private static final String GAME_MODE_NAME = "BSkyBlock";
private static final String[] NAMES = {"adam", "ben", "cara", "dave", "ed", "frank", "freddy", "george", "harry", "ian", "joe"}; private static final String[] NAMES = { "adam", "ben", "cara", "dave", "ed", "frank", "freddy", "george", "harry",
"ian", "joe" };
private TryToComplete ttc; private TryToComplete ttc;
private Challenge challenge; private Challenge challenge;
@ -134,11 +137,13 @@ public class TryToCompleteTest {
when(plugin.getAddonsManager()).thenReturn(am); when(plugin.getAddonsManager()).thenReturn(am);
// One game mode // One game mode
when(am.getGameModeAddons()).thenReturn(Collections.singletonList(gameMode)); when(am.getGameModeAddons()).thenReturn(Collections.singletonList(gameMode));
AddonDescription desc2 = new AddonDescription.Builder("bentobox", GAME_MODE_NAME, "1.3").description("test").authors("tasty").build(); AddonDescription desc2 = new AddonDescription.Builder("bentobox", GAME_MODE_NAME, "1.3").description("test")
.authors("tasty").build();
when(gameMode.getDescription()).thenReturn(desc2); when(gameMode.getDescription()).thenReturn(desc2);
// Challenge Level // Challenge Level
@NonNull ChallengeLevel level = new ChallengeLevel(); @NonNull
ChallengeLevel level = new ChallengeLevel();
String levelName = GAME_MODE_NAME + "_novice"; String levelName = GAME_MODE_NAME + "_novice";
level.setUniqueId(levelName); level.setUniqueId(levelName);
level.setFriendlyName("Novice"); level.setFriendlyName("Novice");
@ -201,9 +206,12 @@ public class TryToCompleteTest {
when(user.getPlayer()).thenReturn(player); when(user.getPlayer()).thenReturn(player);
UUID uniqueId = UUID.randomUUID(); UUID uniqueId = UUID.randomUUID();
when(user.getUniqueId()).thenReturn(uniqueId); when(user.getUniqueId()).thenReturn(uniqueId);
when(user.getTranslation(anyString())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(0, String.class)); when(user.getTranslation(anyString()))
when(user.getTranslation(anyString(), anyString())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(0, String.class)); .thenAnswer((Answer<String>) invocation -> invocation.getArgument(0, String.class));
when(user.getTranslationOrNothing(anyString())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(0, String.class)); when(user.getTranslation(anyString(), anyString()))
.thenAnswer((Answer<String>) invocation -> invocation.getArgument(0, String.class));
when(user.getTranslationOrNothing(anyString()))
.thenAnswer((Answer<String>) invocation -> invocation.getArgument(0, String.class));
when(user.getName()).thenReturn("tastybento"); when(user.getName()).thenReturn("tastybento");
@Nullable @Nullable
Location userLoc = mock(Location.class); Location userLoc = mock(Location.class);
@ -221,7 +229,8 @@ public class TryToCompleteTest {
when(lm.get(any(), any())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(1, String.class)); when(lm.get(any(), any())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(1, String.class));
PlaceholdersManager phm = mock(PlaceholdersManager.class); PlaceholdersManager phm = mock(PlaceholdersManager.class);
when(plugin.getPlaceholdersManager()).thenReturn(phm); when(plugin.getPlaceholdersManager()).thenReturn(phm);
when(phm.replacePlaceholders(any(), any())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(1, String.class)); when(phm.replacePlaceholders(any(), any()))
.thenAnswer((Answer<String>) invocation -> invocation.getArgument(1, String.class));
// Survival by default // Survival by default
when(player.getGameMode()).thenReturn(GameMode.SURVIVAL); when(player.getGameMode()).thenReturn(GameMode.SURVIVAL);
@ -257,26 +266,30 @@ public class TryToCompleteTest {
// ChatColor // ChatColor
PowerMockito.mockStatic(ChatColor.class, Mockito.RETURNS_MOCKS); PowerMockito.mockStatic(ChatColor.class, Mockito.RETURNS_MOCKS);
when(ChatColor.stripColor(anyString())).thenAnswer((Answer<String>) invocation -> invocation.getArgument(0, String.class)); when(ChatColor.stripColor(anyString()))
.thenAnswer((Answer<String>) invocation -> invocation.getArgument(0, String.class));
}
@After
public void tearDown() throws IOException {
User.clearUsers();
Mockito.framework().clearInlineMocks();
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#TryToComplete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#TryToComplete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testTryToCompleteChallengesAddonUserChallengeWorldStringString() { public void testTryToCompleteChallengesAddonUserChallengeWorldStringString() {
ttc = new TryToComplete(addon, ttc = new TryToComplete(addon, user, challenge, world, topLabel, permissionPrefix);
user,
challenge,
world,
topLabel,
permissionPrefix);
verify(addon).getChallengesManager(); verify(addon).getChallengesManager();
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringNotDeployed() { public void testCompleteChallengesAddonUserChallengeWorldStringStringNotDeployed() {
@ -286,7 +299,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringWrongWorld() { public void testCompleteChallengesAddonUserChallengeWorldStringStringWrongWorld() {
@ -296,7 +310,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringNotOnIsland() { public void testCompleteChallengesAddonUserChallengeWorldStringStringNotOnIsland() {
@ -307,14 +322,16 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringNotOnIslandButOk() { public void testCompleteChallengesAddonUserChallengeWorldStringStringNotOnIslandButOk() {
ChallengesAddon.CHALLENGES_WORLD_PROTECTION.setSetting(world, false); ChallengesAddon.CHALLENGES_WORLD_PROTECTION.setSetting(world, false);
when(im.locationIsOnIsland(any(Player.class), any(Location.class))).thenReturn(false); when(im.locationIsOnIsland(any(Player.class), any(Location.class))).thenReturn(false);
assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"), eq("name")); verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"),
eq("name"));
} }
/** /**
@ -328,7 +345,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringNotRepeatable() { public void testCompleteChallengesAddonUserChallengeWorldStringStringNotRepeatable() {
@ -339,7 +357,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringNotRepeatableFirstTime() { public void testCompleteChallengesAddonUserChallengeWorldStringStringNotRepeatableFirstTime() {
@ -347,7 +366,8 @@ public class TryToCompleteTest {
challenge.setMaxTimes(0); challenge.setMaxTimes(0);
when(cm.getChallengeTimes(any(), any(), any(Challenge.class))).thenReturn(0L); when(cm.getChallengeTimes(any(), any(), any(Challenge.class))).thenReturn(0L);
assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"), eq("name")); verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"),
eq("name"));
} }
/** /**
@ -361,7 +381,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIntZero() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIntZero() {
@ -370,7 +391,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIntNegative() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIntNegative() {
@ -379,7 +401,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIntPositiveWrongEnvinonment() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIntPositiveWrongEnvinonment() {
@ -389,7 +412,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIntPositiveNoPerm() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIntPositiveNoPerm() {
@ -402,30 +426,37 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringSuccess() { public void testCompleteChallengesAddonUserChallengeWorldStringStringSuccess() {
assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"), eq("name")); verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"),
eq("name"));
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
@Ignore("Method is too large for JVM")
public void testCompleteChallengesAddonUserChallengeWorldStringStringSuccessSingleReq() { public void testCompleteChallengesAddonUserChallengeWorldStringStringSuccessSingleReq() {
InventoryRequirements req = new InventoryRequirements(); InventoryRequirements req = new InventoryRequirements();
req.setRequiredItems(Collections.singletonList(new ItemStack(Material.EMERALD_BLOCK))); req.setRequiredItems(Collections.singletonList(new ItemStack(Material.EMERALD_BLOCK)));
challenge.setRequirements(req); challenge.setRequirements(req);
assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.errors.not-enough-items"), eq("[items]"), eq("challenges.materials.emerald_block")); verify(user).getTranslation(any(World.class), eq("challenges.errors.not-enough-items"), eq("[items]"),
eq("challenges.materials.emerald_block"));
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
@Ignore("Too big for JVM")
public void testCompleteChallengesAddonUserChallengeWorldStringStringSuccessMultipleReq() { public void testCompleteChallengesAddonUserChallengeWorldStringStringSuccessMultipleReq() {
InventoryRequirements req = new InventoryRequirements(); InventoryRequirements req = new InventoryRequirements();
@ -454,9 +485,11 @@ public class TryToCompleteTest {
assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
// Sufficient emerald blocks // Sufficient emerald blocks
verify(user, never()).getTranslation(any(World.class), eq("challenges.errors.not-enough-items"), eq("[items]"), eq("challenges.materials.emerald_block")); verify(user, never()).getTranslation(any(World.class), eq("challenges.errors.not-enough-items"), eq("[items]"),
eq("challenges.materials.emerald_block"));
// Not enough books // Not enough books
verify(user).getTranslation(any(World.class), eq("challenges.errors.not-enough-items"), eq("[items]"),eq("challenges.materials.enchanted_book")); verify(user).getTranslation(any(World.class), eq("challenges.errors.not-enough-items"), eq("[items]"),
eq("challenges.materials.enchanted_book"));
} }
/** /**
@ -470,7 +503,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandBBTooLarge() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandBBTooLarge() {
@ -481,13 +515,15 @@ public class TryToCompleteTest {
// Trigger big bounding box error // Trigger big bounding box error
when(bb.getWidthX()).thenReturn(50000D); when(bb.getWidthX()).thenReturn(50000D);
assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(addon).logError("BoundingBox is larger than SearchRadius. | BoundingBox: BoundingBox | Search Distance: 1 | Location: location | Center: center | Range: 0"); verify(addon).logError(
"BoundingBox is larger than SearchRadius. | BoundingBox: BoundingBox | Search Distance: 1 | Location: location | Center: center | Range: 0");
verify(bb).expand(1); verify(bb).expand(1);
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandSuccessNoEntities() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandSuccessNoEntities() {
@ -496,12 +532,14 @@ public class TryToCompleteTest {
req.setSearchRadius(1); req.setSearchRadius(1);
challenge.setRequirements(req); challenge.setRequirements(req);
assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"), eq("name")); verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"),
eq("name"));
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandFailEntities() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandFailEntities() {
@ -512,12 +550,14 @@ public class TryToCompleteTest {
req.setSearchRadius(1); req.setSearchRadius(1);
challenge.setRequirements(req); challenge.setRequirements(req);
assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("3"), eq("[item]"), eq("challenges.entities.ghast.name")); verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("3"),
eq("[item]"), eq("challenges.entities.ghast.name"));
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandFailMultipleEntities() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandFailMultipleEntities() {
@ -531,14 +571,18 @@ public class TryToCompleteTest {
req.setSearchRadius(1); req.setSearchRadius(1);
challenge.setRequirements(req); challenge.setRequirements(req);
assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("3"), eq("[item]"), eq("challenges.entities.ghast.name")); verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("3"),
verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("1"), eq("[item]"), eq("challenges.entities.pufferfish.name")); eq("[item]"), eq("challenges.entities.ghast.name"));
verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("5"), eq("[item]"), eq("challenges.entities.chicken.name")); verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("1"),
eq("[item]"), eq("challenges.entities.pufferfish.name"));
verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("5"),
eq("[item]"), eq("challenges.entities.chicken.name"));
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandFailPartialMultipleEntities() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandFailPartialMultipleEntities() {
@ -558,14 +602,18 @@ public class TryToCompleteTest {
List<Entity> list = Collections.singletonList(ent); List<Entity> list = Collections.singletonList(ent);
when(world.getNearbyEntities(any(BoundingBox.class))).thenReturn(list); when(world.getNearbyEntities(any(BoundingBox.class))).thenReturn(list);
assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("3"), eq("[item]"), eq("challenges.entities.ghast.name")); verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("3"),
verify(user, never()).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("1"), eq("[item]"), eq("challenges.entities.pufferfish.name")); eq("[item]"), eq("challenges.entities.ghast.name"));
verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("5"), eq("[item]"), eq("challenges.entities.chicken.name")); verify(user, never()).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"),
eq("1"), eq("[item]"), eq("challenges.entities.pufferfish.name"));
verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("5"),
eq("[item]"), eq("challenges.entities.chicken.name"));
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandSuccess() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandSuccess() {
@ -583,11 +631,13 @@ public class TryToCompleteTest {
List<Entity> list = Collections.singletonList(ent); List<Entity> list = Collections.singletonList(ent);
when(world.getNearbyEntities(any(BoundingBox.class))).thenReturn(list); when(world.getNearbyEntities(any(BoundingBox.class))).thenReturn(list);
assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"), eq("name")); verify(user).getTranslation(any(World.class), eq("challenges.messages.you-completed-challenge"), eq("[value]"),
eq("name"));
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandPlayerInOtherEnvironment() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIslandPlayerInOtherEnvironment() {
@ -611,21 +661,26 @@ public class TryToCompleteTest {
when(world.getNearbyEntities(any(BoundingBox.class))).thenReturn(list); when(world.getNearbyEntities(any(BoundingBox.class))).thenReturn(list);
when(netherWorld.getNearbyEntities(any(BoundingBox.class))).thenReturn(Collections.emptyList()); when(netherWorld.getNearbyEntities(any(BoundingBox.class))).thenReturn(Collections.emptyList());
assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix)); assertFalse(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix));
verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("1"), eq("[item]"), eq("challenges.entities.pufferfish.name")); verify(user).getTranslation(any(World.class), eq("challenges.errors.you-still-need"), eq("[amount]"), eq("1"),
eq("[item]"), eq("challenges.entities.pufferfish.name"));
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#complete(world.bentobox.challenges.ChallengesAddon, world.bentobox.bentobox.api.user.User, world.bentobox.challenges.database.object.Challenge, org.bukkit.World, java.lang.String, java.lang.String, int)}.
*/ */
@Test @Test
public void testCompleteChallengesAddonUserChallengeWorldStringStringIntMultipleTimesPositiveSuccess() { public void testCompleteChallengesAddonUserChallengeWorldStringStringIntMultipleTimesPositiveSuccess() {
// Try to complete 10 times. Already done 3 times, and max is 10, so it should be only done 7 times // Try to complete 10 times. Already done 3 times, and max is 10, so it should
// be only done 7 times
assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix, 10)); assertTrue(TryToComplete.complete(addon, user, challenge, world, topLabel, permissionPrefix, 10));
verify(user).getTranslation(any(World.class), eq("challenges.messages.you-repeated-challenge-multiple"), eq("[value]"), eq("name"), eq("[count]"), eq("7")); verify(user).getTranslation(any(World.class), eq("challenges.messages.you-repeated-challenge-multiple"),
eq("[value]"), eq("name"), eq("[count]"), eq("7"));
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#build(int)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#build(int)}.
*/ */
@Test @Test
public void testBuild() { public void testBuild() {
@ -635,7 +690,8 @@ public class TryToCompleteTest {
} }
/** /**
* Test method for {@link world.bentobox.challenges.tasks.TryToComplete#removeItems(java.util.List, int)}. * Test method for
* {@link world.bentobox.challenges.tasks.TryToComplete#removeItems(java.util.List, int)}.
*/ */
@Test @Test
public void testRemoveItemsNothing() { public void testRemoveItemsNothing() {