✅ Add first test for download command
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 31 May 2020 12:40:54 +0000 (14:40 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 31 May 2020 14:45:12 +0000 (16:45 +0200)
src/main/java/net/pterodactylus/xdcc/ui/stdin/DownloadCommand.java
src/test/java/net/pterodactylus/xdcc/ui/stdin/DownloadCommandTest.kt [new file with mode: 0644]

index 2fdec0d..75e92ca 100644 (file)
@@ -65,6 +65,9 @@ public class DownloadCommand implements Command {
 
        @Override
        public State execute(State state, List<String> parameters, Writer outputWriter) throws IOException {
+               if (parameters.isEmpty()) {
+                       return state;
+               }
                Integer index = Ints.tryParse(parameters.get(0));
                if ((index != null) && (index < state.getLastResults().size())) {
                        core.fetch(state.getLastResults().get(index).bot(), state.getLastResults().get(index).pack());
diff --git a/src/test/java/net/pterodactylus/xdcc/ui/stdin/DownloadCommandTest.kt b/src/test/java/net/pterodactylus/xdcc/ui/stdin/DownloadCommandTest.kt
new file mode 100644 (file)
index 0000000..2d3aa0a
--- /dev/null
@@ -0,0 +1,31 @@
+package net.pterodactylus.xdcc.ui.stdin
+
+import net.pterodactylus.xdcc.core.Core
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.equalTo
+import org.mockito.Matchers.any
+import org.mockito.Mockito
+import org.mockito.Mockito.never
+import org.mockito.Mockito.verify
+import java.io.StringWriter
+import kotlin.test.Test
+
+class DownloadCommandTest {
+
+       private val core = Mockito.mock(Core::class.java)
+       private val command = DownloadCommand(core)
+       private val state = State()
+
+       @Test
+       fun `executing command without parameters will not fetch anything`() {
+               command.execute(state, emptyList(), StringWriter())
+               verify(core, never()).fetch(any(), any())
+       }
+
+       @Test
+       fun `executing command without parameters will return old state`() {
+               val newState = command.execute(state, emptyList(), StringWriter())
+               assertThat(newState, equalTo(state))
+       }
+
+}