Refactor and implement tests for create and delete command

This commit is contained in:
Ben Woo 2025-01-03 20:27:09 +08:00
parent f67777b9a7
commit 88bb593b84
6 changed files with 85 additions and 6 deletions

View File

@ -1,8 +1,8 @@
package org.mvplugins.multiverse.core.commands
import org.bukkit.ChatColor
import org.bukkit.command.ConsoleCommandSender
import org.bukkit.permissions.PermissionAttachment
import org.mockbukkit.mockbukkit.command.ConsoleCommandSenderMock
import org.mockbukkit.mockbukkit.entity.PlayerMock
import org.mvplugins.multiverse.core.TestWithMockBukkit
import org.mvplugins.multiverse.core.commandtools.MVCommandManager
@ -12,10 +12,10 @@ import kotlin.test.BeforeTest
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
abstract class BaseCommandTest : TestWithMockBukkit() {
abstract class AbstractCommandTest : TestWithMockBukkit() {
protected lateinit var player: PlayerMock
protected lateinit var console: ConsoleCommandSender
protected lateinit var console: ConsoleCommandSenderMock
private lateinit var locales : PluginLocales
private lateinit var attachment : PermissionAttachment

View File

@ -0,0 +1,15 @@
package org.mvplugins.multiverse.core.commands
import org.mvplugins.multiverse.core.world.WorldManager
import kotlin.test.BeforeTest
abstract class AbstractWorldCommandTest : AbstractCommandTest() {
protected lateinit var worldManager: WorldManager
@BeforeTest
fun setUpWorldCommand() {
worldManager = serviceLocator.getActiveService(WorldManager::class.java).takeIf { it != null } ?: run {
throw IllegalStateException("WorldManager is not available as a service") }
}
}

View File

@ -10,7 +10,7 @@ import org.mvplugins.multiverse.core.utils.message.MessageReplacement.replace
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class ConfigCommandTest : BaseCommandTest() {
class ConfigCommandTest : AbstractCommandTest() {
@Test
fun `Modify config global-debug`() {

View File

@ -0,0 +1,30 @@
package org.mvplugins.multiverse.core.commands
import org.bukkit.Bukkit
import org.bukkit.World
import org.bukkit.WorldType
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertTrue
class CreateCommandTest : AbstractWorldCommandTest() {
@Test
fun `Create nether world with default options`() {
assertTrue(Bukkit.dispatchCommand(console, "mv create world1_nether nether"))
val world = worldManager.getLoadedWorld("world1_nether")
assertTrue(world.isDefined)
assertEquals(World.Environment.NETHER, world.get().environment)
}
@Test
fun `Create normal world with specific seed and flat world type without structures`() {
assertTrue(Bukkit.dispatchCommand(console, "mv create world1 normal --seed 1234 --world-type flat --no-structures"))
val world = worldManager.getLoadedWorld("world1")
assertTrue(world.isDefined)
assertEquals(1234L, world.get().seed)
assertEquals(WorldType.FLAT, world.get().worldType.get())
assertFalse(world.get().canGenerateStructures().get())
}
}

View File

@ -0,0 +1,35 @@
package org.mvplugins.multiverse.core.commands
import org.bukkit.Bukkit
import org.mvplugins.multiverse.core.world.LoadedMultiverseWorld
import org.mvplugins.multiverse.core.world.options.CreateWorldOptions
import org.mvplugins.multiverse.core.world.options.UnloadWorldOptions
import kotlin.test.BeforeTest
import kotlin.test.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue
class DeleteCommandTest : AbstractWorldCommandTest() {
private lateinit var testWorld : LoadedMultiverseWorld
@BeforeTest
fun setUp() {
testWorld = worldManager.createWorld(CreateWorldOptions.worldName("test")).get()
}
@Test
fun `Delete loaded world`() {
assertTrue(Bukkit.dispatchCommand(console, "mv delete test"))
assertTrue(Bukkit.dispatchCommand(console, "mv confirm"))
assertFalse(worldManager.getWorld("test").isDefined)
}
@Test
fun `Delete unloaded world`() {
worldManager.unloadWorld(UnloadWorldOptions.world(testWorld))
assertTrue(Bukkit.dispatchCommand(console, "mv delete test"))
assertTrue(Bukkit.dispatchCommand(console, "mv confirm"))
assertFalse(worldManager.getWorld("test").isDefined)
}
}

View File

@ -10,11 +10,10 @@ import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class VersionCommandTest : BaseCommandTest() {
class VersionCommandTest : AbstractCommandTest() {
@Test
fun `Run version command as console`() {
val console = server.consoleSender;
assertTrue(Bukkit.dispatchCommand(console, "mv version"))
val output = ChatColor.stripColor(console.nextMessage())
assertEquals("Multiverse Core Version v" + multiverseCore.getDescription().getVersion(), output)