Skip to content

Commit 9ba6c36

Browse files
committed
Improve test setup and player mocking in unit tests
1 parent 0011a25 commit 9ba6c36

3 files changed

Lines changed: 45 additions & 22 deletions

File tree

pvpmanager/src/test/java/me/chancesd/pvpmanager/PluginSetup.java

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package me.chancesd.pvpmanager;
22

33
import static org.mockito.Mockito.mock;
4-
import static org.mockito.Mockito.when;
54

65
import java.io.File;
76
import java.lang.reflect.Field;
@@ -16,12 +15,19 @@
1615
import org.bukkit.GameMode;
1716
import org.bukkit.Server;
1817
import org.bukkit.World;
18+
import org.bukkit.boss.BossBar;
19+
import org.bukkit.command.ConsoleCommandSender;
1920
import org.bukkit.command.PluginCommand;
21+
import org.bukkit.inventory.ItemStack;
22+
import org.bukkit.scheduler.BukkitScheduler;
2023
import org.bukkit.entity.Player;
24+
import org.bukkit.inventory.PlayerInventory;
25+
import org.bukkit.plugin.PluginManager;
2126
import org.bukkit.plugin.PluginDescriptionFile;
2227
import org.bukkit.plugin.PluginLoader;
23-
import org.bukkit.plugin.PluginManager;
2428
import org.bukkit.plugin.java.JavaPlugin;
29+
import org.bukkit.scoreboard.Scoreboard;
30+
import org.bukkit.scoreboard.ScoreboardManager;
2531
import org.jetbrains.annotations.NotNull;
2632
import org.mockito.ArgumentMatchers;
2733
import org.mockito.Mockito;
@@ -30,6 +36,8 @@ public class PluginSetup {
3036

3137
private PvPManager plugin;
3238
private Server server;
39+
private World world;
40+
private Scoreboard scoreboard;
3341
private String filePath;
3442
private Player attacker;
3543
private Player defender;
@@ -39,14 +47,22 @@ public final void setup() throws Exception {
3947
final String decoded = filePath + "TestServer/plugins/PvPManager";
4048
final File pluginDirectory = new File(decoded);
4149
pluginDirectory.mkdirs();
42-
server = mock(Server.class, Mockito.RETURNS_MOCKS);
50+
server = mock(Server.class);
4351
Mockito.when(server.getPluginManager()).thenReturn(mock(PluginManager.class));
4452
Mockito.when(server.getUpdateFolderFile()).thenReturn(new File(filePath + "TestServer/plugins/update"));
4553
System.setProperty("java.util.logging.SimpleFormatter.format", "[%1$tT] [%4$-7s] %5$s %n");
4654
Mockito.when(server.getLogger()).thenReturn(Logger.getLogger("Minecraft"));
47-
final World world = mock(World.class);
48-
Mockito.when(world.getName()).thenReturn("");
49-
Mockito.when(server.getWorlds()).thenReturn(Arrays.asList(world));
55+
Mockito.when(server.getConsoleSender()).thenReturn(mock(ConsoleCommandSender.class));
56+
Mockito.when(server.getScheduler()).thenReturn(mock(BukkitScheduler.class, Mockito.RETURNS_MOCKS));
57+
Mockito.when(server.getBukkitVersion()).thenReturn("1.20.4-R0.1-SNAPSHOT");
58+
this.world = mock(World.class);
59+
Mockito.when(this.world.getName()).thenReturn("");
60+
Mockito.when(server.getWorlds()).thenReturn(Arrays.asList(this.world));
61+
final ScoreboardManager scoreboardManager = mock(ScoreboardManager.class);
62+
this.scoreboard = mock(Scoreboard.class, Mockito.RETURNS_MOCKS);
63+
Mockito.when(server.getScoreboardManager()).thenReturn(scoreboardManager);
64+
Mockito.when(scoreboardManager.getMainScoreboard()).thenReturn(this.scoreboard);
65+
Mockito.when(server.createBossBar(ArgumentMatchers.anyString(), ArgumentMatchers.any(org.bukkit.boss.BarColor.class), ArgumentMatchers.any(org.bukkit.boss.BarStyle.class))).thenReturn(mock(BossBar.class));
5066
Bukkit.setServer(server);
5167

5268
plugin = Mockito.mock(PvPManager.class, Mockito.CALLS_REAL_METHODS);
@@ -62,31 +78,34 @@ public final void setup() throws Exception {
6278
method.invoke(plugin, (Object) null, server, pdf, pluginDirectory, new File(filePath), PluginSetup.class.getClassLoader());
6379
Mockito.doReturn(mock(PluginCommand.class)).when(plugin).getCommand(ArgumentMatchers.anyString());
6480

65-
plugin.onLoad();
81+
plugin.onPluginLoad();
6682
plugin.onEnable();
6783
setupPlayers();
6884
}
6985

7086
public final void setupPlayers() {
71-
attacker = mock(Player.class, Mockito.RETURNS_MOCKS);
72-
defender = mock(Player.class, Mockito.RETURNS_MOCKS);
73-
when(attacker.hasPlayedBefore()).thenReturn(true);
74-
when(defender.hasPlayedBefore()).thenReturn(true);
75-
when(attacker.getName()).thenReturn("Attacker");
76-
when(defender.getName()).thenReturn("Defender");
77-
when(attacker.getUniqueId()).thenReturn(UUID.randomUUID());
78-
when(defender.getUniqueId()).thenReturn(UUID.randomUUID());
79-
when(attacker.getGameMode()).thenReturn(GameMode.SURVIVAL);
80-
when(defender.getKiller()).thenReturn(attacker);
87+
attacker = createPlayer("Attacker");
88+
defender = createPlayer("Defender");
89+
Mockito.when(defender.getKiller()).thenReturn(attacker);
8190
}
8291

8392
@NotNull
8493
public final Player createPlayer(final String name) {
85-
final Player player = mock(Player.class, Mockito.RETURNS_MOCKS);
86-
when(player.hasPlayedBefore()).thenReturn(true);
87-
when(player.getName()).thenReturn(name);
88-
when(player.getUniqueId()).thenReturn(UUID.randomUUID());
89-
when(player.getGameMode()).thenReturn(GameMode.SURVIVAL);
94+
final Player player = mock(Player.class);
95+
Mockito.when(player.hasPlayedBefore()).thenReturn(true);
96+
Mockito.when(player.getName()).thenReturn(name);
97+
Mockito.when(player.getDisplayName()).thenReturn(name);
98+
Mockito.when(player.getUniqueId()).thenReturn(UUID.randomUUID());
99+
Mockito.when(player.getGameMode()).thenReturn(GameMode.SURVIVAL);
100+
Mockito.when(player.getWorld()).thenReturn(world);
101+
Mockito.when(player.getServer()).thenReturn(this.server);
102+
Mockito.when(player.getScoreboard()).thenReturn(this.scoreboard);
103+
Mockito.when(player.isOnline()).thenReturn(true);
104+
final PlayerInventory inventory = mock(PlayerInventory.class, Mockito.RETURNS_MOCKS);
105+
Mockito.when(player.getInventory()).thenReturn(inventory);
106+
final Player.Spigot spigot = mock(Player.Spigot.class);
107+
Mockito.when(player.spigot()).thenReturn(spigot);
108+
Mockito.when(player.getItemInHand()).thenReturn(mock(ItemStack.class, Mockito.RETURNS_MOCKS));
90109
return player;
91110
}
92111

pvpmanager/src/test/java/me/chancesd/pvpmanager/listener/EntityListenerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ final void setup() {
6565
defender = PT.createPlayer("Defender");
6666
combatAttacker = ph.createPlayer(attacker, true);
6767
combatDefender = ph.createPlayer(defender, true);
68+
combatAttacker.waitForPlayerToLoad();
69+
combatDefender.waitForPlayerToLoad();
6870
}
6971

7072
private void createAttack(final boolean cancelled, final Player attackerPlayer) {

pvpmanager/src/test/java/me/chancesd/pvpmanager/listener/PlayerListenerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ final void setup() {
5252
defender = pt.createPlayer("Defender");
5353
combatAttacker = ph.createPlayer(attacker, true);
5454
combatDefender = ph.createPlayer(defender, true);
55+
combatAttacker.waitForPlayerToLoad();
56+
combatDefender.waitForPlayerToLoad();
5557
}
5658

5759
private void tagPlayer(final CombatPlayer player, final CombatPlayer enemy) {

0 commit comments

Comments
 (0)