LoMines/src/test/java/dev/loki/lomines/command/AdminResetReloadTest.java

113 lines
3.1 KiB
Java

package dev.loki.lomines.command;
import dev.loki.lomines.LoMinesPlugin;
import dev.loki.lomines.command.admin.manage.AdminCommands;
import dev.loki.lomines.core.mine.model.Mine;
import dev.loki.lomines.core.mine.registry.Mines;
import net.kyori.adventure.text.Component;
import org.bukkit.command.CommandSender;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
class AdminResetReloadTest {
@Mock
private LoMinesPlugin plugin;
@Mock
private Mines mines;
@Mock
private CommandSender sender;
@Mock
private Mine mine;
private AdminCommands commands;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
when(plugin.getMines()).thenReturn(mines);
commands = new AdminCommands(plugin);
}
@Test
void testResetMineSuccess() {
String mineName = "testmine";
when(mines.get(mineName)).thenReturn(mine);
commands.handle(sender, "reset", new String[]{mineName});
verify(mine).reset(false);
verify(sender).sendMessage(any(Component.class));
}
@Test
void testResetMineSilent() {
String mineName = "testmine";
when(mines.get(mineName)).thenReturn(mine);
commands.handle(sender, "reset", new String[]{mineName, "silent"});
verify(mine).reset(true);
verify(sender).sendMessage(any(Component.class));
}
@Test
void testResetMineNotFound() {
String mineName = "nonexistent";
when(mines.get(mineName)).thenThrow(new IllegalArgumentException("Mine not found"));
commands.handle(sender, "reset", new String[]{mineName});
verify(sender).sendMessage(any(Component.class));
}
@Test
void testReloadSuccess() throws IOException {
Collection<Mine> mineList = Arrays.asList(mine, mine);
when(mines.getAll()).thenReturn(mineList);
commands.handle(sender, "reload", new String[0]);
verify(mine, times(2)).stop();
verify(mines).loadAll();
verify(sender).sendMessage(any(Component.class));
}
@Test
void testListMinesEmpty() {
when(mines.getAll()).thenReturn(List.of());
commands.handle(sender, "list", new String[0]);
verify(sender).sendMessage(any(Component.class));
}
@Test
void testListMinesWithData() {
when(mines.getAll()).thenReturn(Arrays.asList(mine, mine));
when(mine.getName()).thenReturn("mine1");
when(mine.getBlocks()).thenReturn(100);
when(mine.getTotalVolume()).thenReturn(200);
when(mine.getPercentFilled()).thenReturn(50.0);
commands.handle(sender, "list", new String[0]);
verify(sender, atLeast(3)).sendMessage(any(Component.class));
}
}