diff --git a/src/test/java/com/loki/lochat/core/service/messaging/IgnoreServiceTest.java b/src/test/java/com/loki/lochat/core/service/messaging/IgnoreServiceTest.java new file mode 100644 index 0000000..b1cbe93 --- /dev/null +++ b/src/test/java/com/loki/lochat/core/service/messaging/IgnoreServiceTest.java @@ -0,0 +1,122 @@ +package com.loki.lochat.core.service.messaging; + +import org.bukkit.plugin.java.JavaPlugin; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +class IgnoreServiceTest { + + private JavaPlugin plugin; + private IgnoreService ignoreService; + + @BeforeEach + void setUp() { + plugin = mock(JavaPlugin.class); + ignoreService = new IgnoreService(plugin); + } + + @AfterEach + void tearDown() { + plugin = null; + ignoreService = null; + } + + @Test + void isIgnoring_notIgnored() { + try (MockedStatic ignored = Mockito.mockStatic(com.loki.lochat.utils.platform.FoliaUtil.class)) { + UUID player = UUID.randomUUID(); + UUID target = UUID.randomUUID(); + assertFalse(ignoreService.isIgnoring(player, target)); + } + } + + @Test + void addIgnore_thenIsIgnoring() { + try (MockedStatic fu = Mockito.mockStatic(com.loki.lochat.utils.platform.FoliaUtil.class)) { + UUID player = UUID.randomUUID(); + UUID target = UUID.randomUUID(); + assertTrue(ignoreService.addIgnore(player, target)); + assertTrue(ignoreService.isIgnoring(player, target)); + } + } + + @Test + void addIgnore_duplicateReturnsFalse() { + try (MockedStatic fu = Mockito.mockStatic(com.loki.lochat.utils.platform.FoliaUtil.class)) { + UUID player = UUID.randomUUID(); + UUID target = UUID.randomUUID(); + assertTrue(ignoreService.addIgnore(player, target)); + assertFalse(ignoreService.addIgnore(player, target)); + } + } + + @Test + void removeIgnore() { + try (MockedStatic fu = Mockito.mockStatic(com.loki.lochat.utils.platform.FoliaUtil.class)) { + UUID player = UUID.randomUUID(); + UUID target = UUID.randomUUID(); + ignoreService.addIgnore(player, target); + assertTrue(ignoreService.removeIgnore(player, target)); + assertFalse(ignoreService.isIgnoring(player, target)); + } + } + + @Test + void removeIgnore_notIgnored() { + try (MockedStatic fu = Mockito.mockStatic(com.loki.lochat.utils.platform.FoliaUtil.class)) { + assertFalse(ignoreService.removeIgnore(UUID.randomUUID(), UUID.randomUUID())); + } + } + + @Test + void getIgnoredCount() { + try (MockedStatic fu = Mockito.mockStatic(com.loki.lochat.utils.platform.FoliaUtil.class)) { + UUID player = UUID.randomUUID(); + assertEquals(0, ignoreService.getIgnoredCount(player)); + ignoreService.addIgnore(player, UUID.randomUUID()); + assertEquals(1, ignoreService.getIgnoredCount(player)); + ignoreService.addIgnore(player, UUID.randomUUID()); + assertEquals(2, ignoreService.getIgnoredCount(player)); + } + } + + @Test + void getIgnoredPlayers_returnsSet() { + try (MockedStatic fu = Mockito.mockStatic(com.loki.lochat.utils.platform.FoliaUtil.class)) { + UUID player = UUID.randomUUID(); + UUID target = UUID.randomUUID(); + ignoreService.addIgnore(player, target); + assertTrue(ignoreService.getIgnoredPlayers(player).contains(target)); + } + } + + @Test + void clearIgnores() { + try (MockedStatic fu = Mockito.mockStatic(com.loki.lochat.utils.platform.FoliaUtil.class)) { + UUID player = UUID.randomUUID(); + ignoreService.addIgnore(player, UUID.randomUUID()); + ignoreService.clearIgnores(player); + assertEquals(0, ignoreService.getIgnoredCount(player)); + } + } + + @Test + void multiplePlayersIndepedent() { + try (MockedStatic fu = Mockito.mockStatic(com.loki.lochat.utils.platform.FoliaUtil.class)) { + UUID a = UUID.randomUUID(); + UUID b = UUID.randomUUID(); + UUID target = UUID.randomUUID(); + ignoreService.addIgnore(a, target); + assertTrue(ignoreService.isIgnoring(a, target)); + assertFalse(ignoreService.isIgnoring(b, target)); + } + } +} diff --git a/src/test/java/com/loki/lochat/core/service/messaging/SpyServiceTest.java b/src/test/java/com/loki/lochat/core/service/messaging/SpyServiceTest.java new file mode 100644 index 0000000..8d18ba0 --- /dev/null +++ b/src/test/java/com/loki/lochat/core/service/messaging/SpyServiceTest.java @@ -0,0 +1,75 @@ +package com.loki.lochat.core.service.messaging; + +import com.loki.lochat.config.MessageConfig; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +class SpyServiceTest { + + private MessageConfig messageConfig; + private SpyService spyService; + + @BeforeEach + void setUp() { + messageConfig = mock(MessageConfig.class); + spyService = new SpyService(messageConfig); + } + + @Test + void isSpying_defaultFalse() { + assertFalse(spyService.isSpying(UUID.randomUUID())); + } + + @Test + void toggleSpy_turnsOn() { + UUID player = UUID.randomUUID(); + assertTrue(spyService.toggleSpy(player)); + assertTrue(spyService.isSpying(player)); + } + + @Test + void toggleSpy_turnsOff() { + UUID player = UUID.randomUUID(); + spyService.toggleSpy(player); + assertFalse(spyService.toggleSpy(player)); + assertFalse(spyService.isSpying(player)); + } + + @Test + void toggleSpy_toggleOnOff() { + UUID player = UUID.randomUUID(); + assertTrue(spyService.toggleSpy(player)); + assertFalse(spyService.toggleSpy(player)); + assertTrue(spyService.toggleSpy(player)); + assertTrue(spyService.isSpying(player)); + } + + @Test + void removeSpy_removesFromSet() { + UUID player = UUID.randomUUID(); + spyService.toggleSpy(player); + spyService.removeSpy(player); + assertFalse(spyService.isSpying(player)); + } + + @Test + void removeSpy_notSpying() { + spyService.removeSpy(UUID.randomUUID()); + assertFalse(spyService.isSpying(UUID.randomUUID())); + } + + @Test + void multiplePlayersIndepedent() { + UUID a = UUID.randomUUID(); + UUID b = UUID.randomUUID(); + spyService.toggleSpy(a); + assertTrue(spyService.isSpying(a)); + assertFalse(spyService.isSpying(b)); + } +}