migrate AutocompleteTest and add mockito ofc

This commit is contained in:
tueem 2025-02-19 14:00:01 +01:00
parent 92704ca230
commit ded81983e3
Signed by: tueem
GPG Key ID: 65C8667EC17A88FB
2 changed files with 24 additions and 6 deletions

View File

@ -18,6 +18,7 @@ repositories {
dependencies {
// Use JUnit Jupiter for testing.
testImplementation(libs.junit.jupiter)
testImplementation(libs.mockito)
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
implementation(libs.log4j)

View File

@ -1,12 +1,18 @@
package net.tomatentum.marinara.test.javacord;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.Collections;
import java.util.Optional;
import org.javacord.api.interaction.AutocompleteInteraction;
import org.javacord.api.interaction.SlashCommandInteractionOption;
import org.junit.jupiter.api.Test;
import net.tomatentum.marinara.Marinara;
import net.tomatentum.marinara.test.javacord.mocks.AutocompleteInteractionMock;
import net.tomatentum.marinara.test.javacord.mocks.DiscordApiMock;
import net.tomatentum.marinara.wrapper.LibraryWrapper;
import net.tomatentum.marinara.wrapper.javacord.JavacordWrapper;
@ -14,10 +20,21 @@ public class AutoCompleteTest {
@Test
public void testAutocomplete() {
LibraryWrapper wrapper = new JavacordWrapper(new DiscordApiMock()); //null okay as we don't use the discord API in this test.
SlashCommandInteractionOption optionMock = mock();
AutocompleteInteraction autocompleteInteractionMock = mock();
when(optionMock.getName()).thenReturn("foo");
when(optionMock.getStringValue()).thenReturn(Optional.of("test"));
when(autocompleteInteractionMock.getCommandName()).thenReturn("test");
when(autocompleteInteractionMock.getFocusedOption()).thenReturn(optionMock);
when(autocompleteInteractionMock.getOptions()).thenReturn(Collections.emptyList());
LibraryWrapper wrapper = new JavacordWrapper(null); //null okay as we don't use the discord API in this test.
Marinara marinara = Marinara.load(wrapper);
marinara.getRegistry().addInteractions(new TestAutocomplete());
wrapper.handleInteraction(new AutocompleteInteractionMock());
assertTrue(AutocompleteInteractionMock.didAutocompleteRun);
wrapper.handleInteraction(autocompleteInteractionMock);
verify(autocompleteInteractionMock).respondWithChoices(any());
}
}