diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java index a716ff2e63..f9ecc59d02 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java @@ -795,7 +795,8 @@ public class ScreenshotPlugin extends Plugin * @param fileName Filename to use, without file extension. * @param subDir Subdirectory to store the captured screenshot in. */ - private void takeScreenshot(String fileName, String subDir) + @VisibleForTesting + void takeScreenshot(String fileName, String subDir) { if (client.getGameState() == GameState.LOGIN_SCREEN) { diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java index d1da52b7f4..655fe4d42e 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java @@ -28,7 +28,6 @@ import com.google.inject.Guice; import com.google.inject.testing.fieldbinder.Bind; import com.google.inject.testing.fieldbinder.BoundFieldModule; import java.util.concurrent.ScheduledExecutorService; -import java.util.function.Consumer; import javax.inject.Inject; import static net.runelite.api.ChatMessageType.GAMEMESSAGE; import static net.runelite.api.ChatMessageType.TRADE; @@ -57,15 +56,14 @@ import static org.junit.Assert.assertEquals; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import org.mockito.Mock; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoInteractions; -import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import org.mockito.junit.MockitoJUnitRunner; @@ -132,6 +130,7 @@ public class ScreenshotPluginTest public void before() { Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this); + screenshotPlugin = spy(screenshotPlugin); when(screenshotConfig.screenshotLevels()).thenReturn(true); when(screenshotConfig.screenshotValuableDrop()).thenReturn(true); when(screenshotConfig.valuableDropThreshold()).thenReturn(1000); @@ -183,7 +182,7 @@ public class ScreenshotPluginTest widgetLoaded.setGroupId(WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID); screenshotPlugin.onWidgetLoaded(widgetLoaded); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Theatre of Blood(73)", "Boss Kills"); } @Test @@ -201,7 +200,7 @@ public class ScreenshotPluginTest widgetLoaded.setGroupId(WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID); screenshotPlugin.onWidgetLoaded(widgetLoaded); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Theatre of Blood Story Mode(73)", "Boss Kills"); } @Test @@ -219,7 +218,7 @@ public class ScreenshotPluginTest widgetLoaded.setGroupId(WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID); screenshotPlugin.onWidgetLoaded(widgetLoaded); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Theatre of Blood Hard Mode(73)", "Boss Kills"); } @Test @@ -228,12 +227,12 @@ public class ScreenshotPluginTest ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", NOT_SO_VALUABLE_DROP, null, 0); screenshotPlugin.onChatMessage(chatMessageEvent); - verifyNoInteractions(drawManager); + verify(screenshotPlugin, never()).takeScreenshot(anyString(), anyString()); when(screenshotConfig.valuableDropThreshold()).thenReturn(0); screenshotPlugin.onChatMessage(chatMessageEvent); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Valuable drop 6 x Bronze arrow (42 coins)", "Valuable Drops"); } @Test @@ -243,12 +242,12 @@ public class ScreenshotPluginTest when(screenshotConfig.valuableDropThreshold()).thenReturn(100_000); screenshotPlugin.onChatMessage(chatMessageEvent); - verifyNoInteractions(drawManager); + verify(screenshotPlugin, never()).takeScreenshot(anyString(), anyString()); when(screenshotConfig.valuableDropThreshold()).thenReturn(1000); screenshotPlugin.onChatMessage(chatMessageEvent); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Valuable drop Rune scimitar (25,600 coins)", "Valuable Drops"); } @Test @@ -257,7 +256,7 @@ public class ScreenshotPluginTest ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", UNTRADEABLE_DROP, null, 0); screenshotPlugin.onChatMessage(chatMessageEvent); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Untradeable drop Rusty sword", "Untradeable Drops"); } @Test @@ -277,7 +276,7 @@ public class ScreenshotPluginTest GameTick tick = new GameTick(); screenshotPlugin.onGameTick(tick); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Hitpoints(99)", "Levels"); } @Test @@ -297,7 +296,7 @@ public class ScreenshotPluginTest GameTick tick = new GameTick(); screenshotPlugin.onGameTick(tick); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Firemaking(9)", "Levels"); } @Test @@ -317,7 +316,7 @@ public class ScreenshotPluginTest GameTick tick = new GameTick(); screenshotPlugin.onGameTick(tick); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Attack(70)", "Levels"); } @Test @@ -337,7 +336,7 @@ public class ScreenshotPluginTest GameTick tick = new GameTick(); screenshotPlugin.onGameTick(tick); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Hunter(2)", "Levels"); } @Test @@ -386,7 +385,7 @@ public class ScreenshotPluginTest screenshotPlugin.onGameTick(new GameTick()); - verify(drawManager, times(0)).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin, never()).takeScreenshot(anyString(), anyString()); } @Test @@ -405,7 +404,7 @@ public class ScreenshotPluginTest screenshotPlugin.onGameTick(new GameTick()); - verify(drawManager, times(0)).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin, never()).takeScreenshot(anyString(), anyString()); } @Test @@ -420,7 +419,7 @@ public class ScreenshotPluginTest ScriptPreFired notificationDelay = new ScriptPreFired(ScriptID.NOTIFICATION_DELAY); screenshotPlugin.onScriptPreFired(notificationDelay); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Collection log (Chompy bird hat)", "Collection Log"); } @Test @@ -431,12 +430,13 @@ public class ScreenshotPluginTest when(client.getVar(Varbits.COLLECTION_LOG_NOTIFICATION)).thenReturn(1); screenshotPlugin.onChatMessage(chatMessageEvent); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Collection log (Chompy bird hat)", "Collection Log"); + reset(screenshotPlugin); when(client.getVar(Varbits.COLLECTION_LOG_NOTIFICATION)).thenReturn(3); screenshotPlugin.onChatMessage(chatMessageEvent); - verifyNoMoreInteractions(drawManager); + verify(screenshotPlugin, never()).takeScreenshot(anyString(), anyString()); } @Test @@ -445,12 +445,13 @@ public class ScreenshotPluginTest ChatMessage chatMessageEvent = new ChatMessage(null, TRADE, "", "You won! You have now won 1,909 duels.", null, 0); screenshotPlugin.onChatMessage(chatMessageEvent); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Duel won (1909)", "Duels"); + reset(screenshotPlugin); chatMessageEvent = new ChatMessage(null, TRADE, "", "You have lost 145 duels.", null, 0); screenshotPlugin.onChatMessage(chatMessageEvent); - verifyNoMoreInteractions(drawManager); + verify(screenshotPlugin, never()).takeScreenshot(anyString(), anyString()); } @Test @@ -459,12 +460,12 @@ public class ScreenshotPluginTest ChatMessage chatMessageEvent = new ChatMessage(null, TRADE, "", "You were defeated! You have won 1,909 duels.", null, 0); screenshotPlugin.onChatMessage(chatMessageEvent); - verify(drawManager, never()).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin, never()).takeScreenshot(anyString(), anyString()); chatMessageEvent = new ChatMessage(null, TRADE, "", "You have now lost 1,909 duels.", null, 0); screenshotPlugin.onChatMessage(chatMessageEvent); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Duel lost (1909)", "Duels"); } @Test @@ -481,7 +482,7 @@ public class ScreenshotPluginTest ScriptPreFired notificationDelay = new ScriptPreFired(ScriptID.NOTIFICATION_DELAY); screenshotPlugin.onScriptPreFired(notificationDelay); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Combat task (Handyman)", "Combat Achievements"); } @Test @@ -495,6 +496,6 @@ public class ScreenshotPluginTest "Congratulations, you've completed an easy combat task: Handyman.", null, 0); screenshotPlugin.onChatMessage(chatMessageEvent); - verify(drawManager).requestNextFrameListener(any(Consumer.class)); + verify(screenshotPlugin).takeScreenshot("Combat task (Handyman)", "Combat Achievements"); } }