Compare commits
3 Commits
5d8f737481
...
ca0ab13316
Author | SHA1 | Date | |
---|---|---|---|
ca0ab13316 | |||
ded81983e3 | |||
92704ca230 |
@ -57,6 +57,8 @@ public class Discord4JWrapper extends LibraryWrapper {
|
||||
if (api != null)
|
||||
api.on(InteractionCreateEvent.class)
|
||||
.subscribe(event -> handleInteraction(event));
|
||||
else
|
||||
logger.warn("GatewayDiscordClient was null so no Events were subscribed to.");
|
||||
|
||||
logger.info("Discord4J wrapper loaded!");
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -44,7 +44,10 @@ public class JavacordWrapper extends LibraryWrapper {
|
||||
public JavacordWrapper(DiscordApi api) {
|
||||
this.api = api;
|
||||
this.contextObjectProvider = new JavacordContextObjectProvider();
|
||||
api.addInteractionCreateListener((e) -> handleInteraction(e.getInteraction()));
|
||||
if (api != null)
|
||||
api.addInteractionCreateListener((e) -> handleInteraction(e.getInteraction()));
|
||||
else
|
||||
logger.warn("DiscordApi was null so no Events were subscribed to.");
|
||||
logger.info("Javacord wrapper loaded!");
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -7,8 +7,7 @@ import org.junit.jupiter.api.TestInstance;
|
||||
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
||||
|
||||
import net.tomatentum.marinara.Marinara;
|
||||
import net.tomatentum.marinara.test.javacord.mocks.ButtonInteractionMock;
|
||||
import net.tomatentum.marinara.test.javacord.mocks.DiscordApiMock;
|
||||
import net.tomatentum.marinara.test.javacord.mocks.CommonMocks;
|
||||
import net.tomatentum.marinara.wrapper.LibraryWrapper;
|
||||
import net.tomatentum.marinara.wrapper.javacord.JavacordWrapper;
|
||||
|
||||
@ -17,10 +16,10 @@ public class ButtonTest {
|
||||
|
||||
@Test
|
||||
public void testButtonExecution() {
|
||||
LibraryWrapper wrapper = new JavacordWrapper(new DiscordApiMock()); //null okay as we don't use the discord API in this test.
|
||||
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 TestButton());
|
||||
wrapper.handleInteraction(new ButtonInteractionMock("test"));
|
||||
wrapper.handleInteraction(CommonMocks.getButtonInteractionMock("test"));
|
||||
assertTrue(TestButton.didRun);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,29 @@
|
||||
package net.tomatentum.marinara.test.javacord.mocks;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import org.javacord.api.entity.channel.TextChannel;
|
||||
import org.javacord.api.entity.message.Message;
|
||||
import org.javacord.api.entity.server.Server;
|
||||
import org.javacord.api.entity.user.User;
|
||||
import org.javacord.api.interaction.ButtonInteraction;
|
||||
|
||||
public class CommonMocks {
|
||||
|
||||
public static ButtonInteraction getButtonInteractionMock(String customId) {
|
||||
ButtonInteraction buttonInteractionMock = mock();
|
||||
|
||||
when(buttonInteractionMock.getCustomId()).thenReturn(customId);
|
||||
when(buttonInteractionMock.getMessage()).thenReturn(mock(Message.class));
|
||||
when(buttonInteractionMock.getServer()).thenReturn(Optional.of(mock(Server.class)));
|
||||
when(buttonInteractionMock.getChannel()).thenReturn(Optional.of(mock(TextChannel.class)));
|
||||
when(buttonInteractionMock.getUser()).thenReturn(mock(User.class));
|
||||
|
||||
|
||||
return buttonInteractionMock;
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user