diff --git a/Changelog.txt b/Changelog.txt index 99528ae53..f64a0f576 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,8 @@ +Version 2.1.231 + Fixed a bug preventing parties from being made without passwords (Thanks Momshroom) + Updated korean locale (thanks mangchi57) + Added some unit tests for party creation + Version 2.1.230 Fixed an error that could happen when mcMMO was saving when parties were disabled by party.yml (thanks IAISI & L4BORG) Fixed several exceptions when checking PVP damage when parties were disabled by party.yml (thanks IAISI & L4BORG) diff --git a/pom.xml b/pom.xml index 02f35f1ba..61f6317bb 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.gmail.nossr50.mcMMO mcMMO - 2.1.230 + 2.1.231 mcMMO https://github.com/mcMMO-Dev/mcMMO diff --git a/src/test/java/com/gmail/nossr50/party/PartyManagerTest.java b/src/test/java/com/gmail/nossr50/party/PartyManagerTest.java new file mode 100644 index 000000000..bd4e2d629 --- /dev/null +++ b/src/test/java/com/gmail/nossr50/party/PartyManagerTest.java @@ -0,0 +1,98 @@ +package com.gmail.nossr50.party; + +import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.locale.LocaleLoader; +import com.gmail.nossr50.mcMMO; +import org.bukkit.Server; +import org.bukkit.entity.Player; +import org.bukkit.plugin.PluginManager; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.*; + +class PartyManagerTest { + + static mcMMO mockMcMMO; + + @BeforeAll + public static void setup() { + // create a static stub for LocaleLoader.class + mockStatic(LocaleLoader.class); + when(LocaleLoader.getString(anyString())).thenReturn(""); + + mockMcMMO = mock(mcMMO.class); + final Server mockServer = mock(Server.class); + when(mockMcMMO.getServer()).thenReturn(mockServer); + when(mockServer.getPluginManager()).thenReturn(mock(PluginManager.class)); + + // TODO: Add cleanup for static mock + } + + @Test + public void createPartyWithoutPasswordShouldSucceed() { + // Given + PartyManager partyManager = new PartyManager(mockMcMMO); + String partyName = "TestParty"; + + // TODO: Update this with utils from the other dev branches in the future + Player player = mock(Player.class); + McMMOPlayer mmoPlayer = mock(McMMOPlayer.class); + when(mmoPlayer.getPlayer()).thenReturn(player); + when(player.getUniqueId()).thenReturn(new UUID(0, 0)); + + // When & Then + partyManager.createParty(mmoPlayer, partyName, null); + } + + @Test + public void createPartyWithPasswordShouldSucceed() { + // Given + PartyManager partyManager = new PartyManager(mockMcMMO); + String partyName = "TestParty"; + String partyPassword = "somePassword"; + + // TODO: Update this with utils from the other dev branches in the future + Player player = mock(Player.class); + McMMOPlayer mmoPlayer = mock(McMMOPlayer.class); + when(mmoPlayer.getPlayer()).thenReturn(player); + when(player.getUniqueId()).thenReturn(new UUID(0, 0)); + + // When & Then + partyManager.createParty(mmoPlayer, partyName, partyPassword); + } + + @Test + public void createPartyWithoutNameShouldFail() { + // Given + PartyManager partyManager = new PartyManager(mockMcMMO); + String partyPassword = "somePassword"; + + // TODO: Update this with utils from the other dev branches in the future + Player player = mock(Player.class); + McMMOPlayer mmoPlayer = mock(McMMOPlayer.class); + when(mmoPlayer.getPlayer()).thenReturn(player); + when(player.getUniqueId()).thenReturn(new UUID(0, 0)); + + // When & Then + assertThrows(NullPointerException.class, + () -> partyManager.createParty(mmoPlayer, null, partyPassword)); + } + + @Test + public void createPartyWithoutPlayerShouldFail() { + // Given + PartyManager partyManager = new PartyManager(mockMcMMO); + String partyName = "TestParty"; + String partyPassword = "somePassword"; + + // When & Then + assertThrows(NullPointerException.class, + () -> partyManager.createParty(null, partyName, partyPassword)); + } + +} \ No newline at end of file