diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0d4720c..021ee38 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,6 +7,7 @@ log4j = "2.24.1" javacord = "3.8.0" discord4j = "3.2.7" geantyref = "2.0.0" +mockito = "5.15.2" [libraries] junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter" } @@ -14,3 +15,4 @@ log4j = { module = "org.apache.logging.log4j:log4j-api", version.ref = "log4j"} javacord = { module = "org.javacord:javacord", version.ref = "javacord"} discord4j = { module = "com.discord4j:discord4j-core", version.ref = "discord4j"} geantyref = { module = "io.leangen.geantyref:geantyref", version.ref = "geantyref"} +mockito = {module = "org.mockito:mockito-core", version.ref = "mockito"} diff --git a/wrapper/discord4j/build.gradle.kts b/wrapper/discord4j/build.gradle.kts index 49da9dc..dbbc261 100644 --- a/wrapper/discord4j/build.gradle.kts +++ b/wrapper/discord4j/build.gradle.kts @@ -18,11 +18,12 @@ repositories { dependencies { // Use JUnit Jupiter for testing. testImplementation(libs.junit.jupiter) + testImplementation(libs.mockito) testRuntimeOnly("org.junit.platform:junit-platform-launcher") implementation(libs.log4j) implementation(libs.discord4j) { - exclude(module="discord4j-voice") +// exclude(module="discord4j-voice") } implementation(libs.geantyref) implementation(project(":lib")) diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/AutoCompleteTest.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/AutoCompleteTest.java index 40cc7b0..62a9259 100644 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/AutoCompleteTest.java +++ b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/AutoCompleteTest.java @@ -1,23 +1,45 @@ package net.tomatentum.marinara.test.discord4j; -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.ArrayList; +import java.util.Optional; import org.junit.jupiter.api.Test; +import discord4j.core.event.domain.interaction.ChatInputAutoCompleteEvent; +import discord4j.core.object.command.ApplicationCommandInteractionOption; +import discord4j.core.object.command.ApplicationCommandInteractionOptionValue; +import discord4j.core.object.command.ApplicationCommandOption.Type; import net.tomatentum.marinara.Marinara; -import net.tomatentum.marinara.test.discord4j.mocks.AutocompleteInteractionMock; -import net.tomatentum.marinara.test.discord4j.mocks.DiscordApiMock; import net.tomatentum.marinara.wrapper.LibraryWrapper; -import net.tomatentum.marinara.wrapper.javacord.JavacordWrapper; +import net.tomatentum.marinara.wrapper.discord4j.Discord4JWrapper; 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. + ApplicationCommandInteractionOption optionMock = mock(); + ChatInputAutoCompleteEvent autoCompleteEventMock = mock(); + + when(optionMock.getName()).thenReturn("foo"); + when(optionMock.getType()).thenReturn(Type.STRING); + when(optionMock.getValue()).thenReturn( + Optional.of( + new ApplicationCommandInteractionOptionValue(null, null, Type.STRING.getValue(), "test", null) + )); + + when(autoCompleteEventMock.getCommandName()).thenReturn("test"); + when(autoCompleteEventMock.getOptions()).thenReturn(new ArrayList<>()); + when(autoCompleteEventMock.getFocusedOption()).thenReturn(optionMock); + + LibraryWrapper wrapper = new Discord4JWrapper(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(autoCompleteEventMock); + verify(autoCompleteEventMock).respondWithSuggestions(any()); } } diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/ButtonTest.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/ButtonTest.java index c8b013f..bb0c70b 100644 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/ButtonTest.java +++ b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/ButtonTest.java @@ -6,21 +6,23 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; +import discord4j.core.event.domain.interaction.ButtonInteractionEvent; import net.tomatentum.marinara.Marinara; -import net.tomatentum.marinara.test.discord4j.mocks.ButtonInteractionMock; -import net.tomatentum.marinara.test.discord4j.mocks.DiscordApiMock; +import net.tomatentum.marinara.test.discord4j.mocks.CommonMocks; import net.tomatentum.marinara.wrapper.LibraryWrapper; -import net.tomatentum.marinara.wrapper.javacord.JavacordWrapper; +import net.tomatentum.marinara.wrapper.discord4j.Discord4JWrapper; @TestInstance(Lifecycle.PER_CLASS) 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. + ButtonInteractionEvent buttonEventMock = CommonMocks.getButtonEventMock("test"); + + LibraryWrapper wrapper = new Discord4JWrapper(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(buttonEventMock); assertTrue(TestButton.didRun); } diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/InteractionCheckTest.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/InteractionCheckTest.java index 027dc4a..0e7874c 100644 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/InteractionCheckTest.java +++ b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/InteractionCheckTest.java @@ -2,46 +2,69 @@ package net.tomatentum.marinara.test.discord4j; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.Optional; -import org.javacord.api.entity.permission.PermissionType; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; +import discord4j.core.event.domain.interaction.ButtonInteractionEvent; +import discord4j.core.object.command.Interaction; +import discord4j.core.object.entity.Member; +import discord4j.rest.util.Permission; +import discord4j.rest.util.PermissionSet; import net.tomatentum.marinara.Marinara; -import net.tomatentum.marinara.test.discord4j.mocks.ButtonInteractionMock; -import net.tomatentum.marinara.test.discord4j.mocks.DiscordApiMock; -import net.tomatentum.marinara.test.discord4j.mocks.ServerMock; +import net.tomatentum.marinara.test.discord4j.mocks.CommonMocks; import net.tomatentum.marinara.wrapper.LibraryWrapper; -import net.tomatentum.marinara.wrapper.javacord.JavacordWrapper; -import net.tomatentum.marinara.wrapper.javacord.checks.PermissionCheck; +import net.tomatentum.marinara.wrapper.discord4j.Discord4JWrapper; +import net.tomatentum.marinara.wrapper.discord4j.checks.PermissionCheck; +import reactor.core.publisher.Mono; @TestInstance(Lifecycle.PER_CLASS) public class InteractionCheckTest { @Test public void testInteractionCheck() { - LibraryWrapper wrapper = new JavacordWrapper(new DiscordApiMock()); + ButtonInteractionEvent buttonEventMock = CommonMocks.getButtonEventMock("test"); + + LibraryWrapper wrapper = new Discord4JWrapper(null); Marinara marinara = Marinara.load(wrapper); marinara.getCheckRegistry().addCheck(new TestInteractionCheck()); marinara.getRegistry().addInteractions(new TestButton()); - wrapper.handleInteraction(new ButtonInteractionMock("test")); + wrapper.handleInteraction(buttonEventMock); + assertTrue(TestInteractionCheck.preExecuted); assertTrue(TestInteractionCheck.postExecuted); + assertTrue(TestButton.didRun); } @Test public void testPermissionCheck() { - LibraryWrapper wrapper = new JavacordWrapper(new DiscordApiMock()); + Member memberMock = mock(); + Interaction interactionMock = mock(); + + when(memberMock.getBasePermissions()).thenReturn(Mono.just(PermissionSet.none())); + + when(interactionMock.getMember()).thenReturn(Optional.of(memberMock)); + + ButtonInteractionEvent buttonEventMock = CommonMocks.getButtonEventMock("permissionCheck", interactionMock); + + LibraryWrapper wrapper = new Discord4JWrapper(null); Marinara marinara = Marinara.load(wrapper); marinara.getCheckRegistry().addCheck(new PermissionCheck()); marinara.getRegistry().addInteractions(new TestButton()); - wrapper.handleInteraction(new ButtonInteractionMock("permissionCheck")); - assertTrue(TestButton.didPermRun); - TestButton.didPermRun = false; - ServerMock.TESTPERMISSION = PermissionType.ATTACH_FILE; - wrapper.handleInteraction(new ButtonInteractionMock("permissionCheck")); + + wrapper.handleInteraction(buttonEventMock); assertFalse(TestButton.didPermRun); + TestButton.didPermRun = false; + + when(memberMock.getBasePermissions()).thenReturn(Mono.just(PermissionSet.of(Permission.ATTACH_FILES))); + + wrapper.handleInteraction(buttonEventMock); + assertTrue(TestButton.didPermRun); } } diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/SlashCommandTest.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/SlashCommandTest.java index 6cc294a..377f123 100644 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/SlashCommandTest.java +++ b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/SlashCommandTest.java @@ -1,39 +1,46 @@ package net.tomatentum.marinara.test.discord4j; -import org.javacord.api.DiscordApi; -import org.javacord.api.DiscordApiBuilder; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.Arrays; +import java.util.Optional; + import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; +import discord4j.core.DiscordClient; +import discord4j.core.GatewayDiscordClient; +import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; +import discord4j.core.object.command.ApplicationCommandInteractionOption; +import discord4j.core.object.command.ApplicationCommandInteractionOptionValue; +import discord4j.core.object.command.ApplicationCommandOption.Type; import net.tomatentum.marinara.Marinara; -import net.tomatentum.marinara.test.discord4j.mocks.SlashCommandInteractionMock; import net.tomatentum.marinara.wrapper.LibraryWrapper; -import net.tomatentum.marinara.wrapper.javacord.JavacordWrapper; +import net.tomatentum.marinara.wrapper.discord4j.Discord4JWrapper; @TestInstance(Lifecycle.PER_CLASS) public class SlashCommandTest { String DISCORD_TOKEN = System.getenv("DISCORD_TEST_TOKEN"); - DiscordApi api; + GatewayDiscordClient client; @BeforeAll void setUp() { - api = new DiscordApiBuilder() - .setToken(DISCORD_TOKEN) - .login().join(); + client = DiscordClient.create(DISCORD_TOKEN).login().block(); } @AfterAll void tearDown() { - api.disconnect(); - api = null; + client.logout().block(); + client = null; } @Test void testSlashCommand() { - Marinara marinara = Marinara.load(new JavacordWrapper(api)); + Marinara marinara = Marinara.load(new Discord4JWrapper(client)); marinara.getRegistry().addInteractions(new TestCommand()); marinara.getRegistry().registerCommands(); System.out.println("Success!"); @@ -41,11 +48,25 @@ public class SlashCommandTest { @Test void testSlashCommandExecution() { - LibraryWrapper wrapper = new JavacordWrapper(api); + ApplicationCommandInteractionOption optionMock = mock(); + ChatInputInteractionEvent eventMock = mock(); + + when(optionMock.getName()).thenReturn("foo"); + when(optionMock.getType()).thenReturn(Type.STRING); + when(optionMock.getValue()).thenReturn( + Optional.of( + new ApplicationCommandInteractionOptionValue(null, null, Type.STRING.getValue(), "test", null) + )); + + when(eventMock.getCommandName()).thenReturn("test"); + when(eventMock.getOptions()).thenReturn(Arrays.asList(optionMock)); + when(eventMock.getOption("foo")).thenReturn(Optional.of(optionMock)); + + LibraryWrapper wrapper = new Discord4JWrapper(client); Marinara marinara = Marinara.load(wrapper); marinara.getRegistry().addInteractions(new TestCommand()); - wrapper.handleInteraction(new SlashCommandInteractionMock()); + wrapper.handleInteraction(eventMock); } diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestAutocomplete.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestAutocomplete.java index 391d67d..d216805 100644 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestAutocomplete.java +++ b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestAutocomplete.java @@ -4,8 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.Collections; -import org.javacord.api.interaction.AutocompleteInteraction; - +import discord4j.core.event.domain.interaction.ChatInputAutoCompleteEvent; import net.tomatentum.marinara.interaction.InteractionHandler; import net.tomatentum.marinara.interaction.annotation.AutoComplete; import net.tomatentum.marinara.interaction.commands.annotation.SlashCommand; @@ -14,10 +13,10 @@ public class TestAutocomplete implements InteractionHandler { @SlashCommand(name = "test") @AutoComplete - public void autocomplete(AutocompleteInteraction context, String value) { + public void autocomplete(ChatInputAutoCompleteEvent context, String value) { System.out.println("Success!"); assertEquals(value, "test"); - context.respondWithChoices(Collections.emptyList()); + context.respondWithSuggestions(Collections.emptyList()); } } diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestButton.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestButton.java index d991392..25a1c91 100644 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestButton.java +++ b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestButton.java @@ -2,17 +2,17 @@ package net.tomatentum.marinara.test.discord4j; import static org.junit.jupiter.api.Assertions.assertNotNull; -import org.javacord.api.entity.channel.TextChannel; -import org.javacord.api.entity.message.Message; -import org.javacord.api.entity.permission.PermissionType; -import org.javacord.api.entity.server.Server; -import org.javacord.api.entity.user.User; -import org.javacord.api.interaction.ButtonInteraction; - +import discord4j.core.event.domain.interaction.ButtonInteractionEvent; +import discord4j.core.object.entity.Guild; +import discord4j.core.object.entity.Member; +import discord4j.core.object.entity.Message; +import discord4j.core.object.entity.User; +import discord4j.core.object.entity.channel.MessageChannel; +import discord4j.rest.util.Permission; import net.tomatentum.marinara.interaction.InteractionHandler; import net.tomatentum.marinara.interaction.annotation.Button; import net.tomatentum.marinara.test.discord4j.TestInteractionCheck.TestCheck; -import net.tomatentum.marinara.wrapper.javacord.checks.PermissionCheck.HasPermission; +import net.tomatentum.marinara.wrapper.discord4j.checks.PermissionCheck.HasPermission; public class TestButton implements InteractionHandler { @@ -20,11 +20,12 @@ public class TestButton implements InteractionHandler { public static boolean didRun = false; @Button("test") @TestCheck - public void exec(ButtonInteraction interaction, TextChannel channel, Message message, User member, Server server) { + public void exec(ButtonInteractionEvent interaction, MessageChannel channel, Message message, Member member, User user, Guild server) { assertNotNull(interaction); assertNotNull(channel); assertNotNull(message); assertNotNull(member); + assertNotNull(user); assertNotNull(server); didRun = true; System.out.println("Success!"); @@ -33,8 +34,8 @@ public class TestButton implements InteractionHandler { public static boolean didPermRun = false; @Button("permissionCheck") - @HasPermission({PermissionType.ADMINISTRATOR}) - public void exec(ButtonInteraction interaction) { + @HasPermission({Permission.ATTACH_FILES}) + public void exec(ButtonInteractionEvent interaction) { didPermRun = true; System.out.println("It worked!"); } diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestCommand.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestCommand.java index 95c439f..8a98424 100644 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestCommand.java +++ b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/TestCommand.java @@ -2,8 +2,7 @@ package net.tomatentum.marinara.test.discord4j; import static org.junit.jupiter.api.Assertions.assertEquals; -import org.javacord.api.interaction.SlashCommandInteraction; - +import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import net.tomatentum.marinara.interaction.InteractionHandler; import net.tomatentum.marinara.interaction.commands.annotation.SlashCommand; import net.tomatentum.marinara.interaction.commands.annotation.SlashCommandOption; @@ -25,7 +24,7 @@ public class TestCommand implements InteractionHandler { ) } ) - public void exec(SlashCommandInteraction interaction, String test) { + public void exec(ChatInputInteractionEvent event, String test) { assertEquals(test, "test"); System.out.println("Success!"); } diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/AutocompleteInteractionMock.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/AutocompleteInteractionMock.java deleted file mode 100644 index 226ba1d..0000000 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/AutocompleteInteractionMock.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.tomatentum.marinara.test.discord4j.mocks; - -import discord4j.core.GatewayDiscordClient; -import discord4j.core.event.domain.interaction.ChatInputAutoCompleteEvent; -import discord4j.core.object.command.Interaction; -import discord4j.gateway.ShardInfo; - -public class AutocompleteInteractionMock extends ChatInputAutoCompleteEvent { - - public AutocompleteInteractionMock(GatewayDiscordClient gateway, ShardInfo shardInfo, Interaction interaction) { - super(gateway, shardInfo, interaction); - //TODO Auto-generated constructor stub - } - - public static boolean didAutocompleteRun = false; - -} diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/ButtonInteractionMock.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/ButtonInteractionMock.java deleted file mode 100644 index 0583329..0000000 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/ButtonInteractionMock.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.tomatentum.marinara.test.discord4j.mocks; - -import discord4j.core.event.domain.interaction.ButtonInteractionEvent; -import discord4j.core.object.command.Interaction; - -public class ButtonInteractionMock extends ButtonInteractionEvent { - - private String customId; - - public ButtonInteractionMock(String customId) { - super(null, null, null); - this.customId = customId; - } - - @Override - public String getCustomId() { - return customId; - } - - @Override - public Interaction getInteraction() { - return new InteractionMock(); - } - -} diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/ChannelMock.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/ChannelMock.java deleted file mode 100644 index ba491fe..0000000 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/ChannelMock.java +++ /dev/null @@ -1,130 +0,0 @@ -package net.tomatentum.marinara.test.discord4j.mocks; - -import java.time.Instant; -import java.util.Optional; -import java.util.function.Consumer; - -import org.reactivestreams.Publisher; - -import discord4j.common.util.Snowflake; -import discord4j.core.GatewayDiscordClient; -import discord4j.core.object.entity.Message; -import discord4j.core.object.entity.channel.MessageChannel; -import discord4j.core.retriever.EntityRetrievalStrategy; -import discord4j.core.spec.MessageCreateSpec; -import discord4j.core.spec.legacy.LegacyMessageCreateSpec; -import discord4j.rest.entity.RestChannel; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -public class ChannelMock implements MessageChannel { - - @Override - public Type getType() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getType'"); - } - - @Override - public Mono delete(String reason) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'delete'"); - } - - @Override - public RestChannel getRestChannel() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getRestChannel'"); - } - - @Override - public Snowflake getId() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getId'"); - } - - @Override - public GatewayDiscordClient getClient() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getClient'"); - } - - @Override - public Optional getLastMessageId() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getLastMessageId'"); - } - - @Override - public Mono getLastMessage() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getLastMessage'"); - } - - @Override - public Mono getLastMessage(EntityRetrievalStrategy retrievalStrategy) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getLastMessage'"); - } - - @Override - public Optional getLastPinTimestamp() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getLastPinTimestamp'"); - } - - @Override - public Mono createMessage(Consumer spec) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'createMessage'"); - } - - @Override - public Mono createMessage(MessageCreateSpec spec) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'createMessage'"); - } - - @Override - public Mono type() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'type'"); - } - - @Override - public Flux typeUntil(Publisher until) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'typeUntil'"); - } - - @Override - public Flux getMessagesBefore(Snowflake messageId) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getMessagesBefore'"); - } - - @Override - public Flux getMessagesAfter(Snowflake messageId) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getMessagesAfter'"); - } - - @Override - public Mono getMessageById(Snowflake id) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getMessageById'"); - } - - @Override - public Mono getMessageById(Snowflake id, EntityRetrievalStrategy retrievalStrategy) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getMessageById'"); - } - - @Override - public Flux getPinnedMessages() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'getPinnedMessages'"); - } - -} diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/CommonMocks.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/CommonMocks.java new file mode 100644 index 0000000..f000365 --- /dev/null +++ b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/CommonMocks.java @@ -0,0 +1,55 @@ +package net.tomatentum.marinara.test.discord4j.mocks; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.Optional; + +import discord4j.core.event.domain.interaction.ButtonInteractionEvent; +import discord4j.core.object.command.Interaction; +import discord4j.core.object.entity.Guild; +import discord4j.core.object.entity.Member; +import discord4j.core.object.entity.Message; +import discord4j.core.object.entity.User; +import discord4j.core.object.entity.channel.MessageChannel; +import reactor.core.publisher.Mono; + +public class CommonMocks { + public static Interaction getInteractionMock() { + Interaction interaction = mock(Interaction.class); + Message message = mock(Message.class); + MessageChannel channel = mock(MessageChannel.class); + Guild guild = mock(Guild.class); + User user = mock(User.class); + Member member = mock(Member.class); + + + when(interaction.getMessage()).thenReturn(Optional.of(message)); + when(interaction.getChannel()).thenReturn(Mono.just(channel)); + when(interaction.getGuild()).thenReturn(Mono.just(guild)); + when(interaction.getUser()).thenReturn(user); + when(interaction.getMember()).thenReturn(Optional.of(member)); + + + return interaction; + } + + public static ButtonInteractionEvent getButtonEventMock(String customId) { + ButtonInteractionEvent buttonEventMock = mock(ButtonInteractionEvent.class); + + when(buttonEventMock.getCustomId()).thenReturn(customId); + Interaction interactionMock = getInteractionMock(); + when(buttonEventMock.getInteraction()).thenReturn(interactionMock); + Optional message = interactionMock.getMessage(); + when (buttonEventMock.getMessage()).thenReturn(message); + return buttonEventMock; + } + + public static ButtonInteractionEvent getButtonEventMock(String customId, Interaction interaction) { + ButtonInteractionEvent buttonEventMock = mock(ButtonInteractionEvent.class); + + when(buttonEventMock.getCustomId()).thenReturn(customId); + when(buttonEventMock.getInteraction()).thenReturn(interaction); + return buttonEventMock; + } +} diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/InteractionMock.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/InteractionMock.java deleted file mode 100644 index 4de0152..0000000 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/InteractionMock.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.tomatentum.marinara.test.discord4j.mocks; - -import java.util.Optional; - -import discord4j.core.object.command.Interaction; -import discord4j.core.object.entity.Guild; -import discord4j.core.object.entity.Message; -import discord4j.core.object.entity.User; -import discord4j.core.object.entity.channel.MessageChannel; -import reactor.core.publisher.Mono; - -public class InteractionMock extends Interaction - { - - public InteractionMock() { - super(null, null); - } - - @Override - public Optional getMessage() { - //return Optional.of(new MessageMock()); - return Optional.empty(); - } - - @Override - public Mono getChannel() { - return Mono.just(new ChannelMock()); - } - - @Override - public Mono getGuild() { - //return Mono.just(new ServerMock()); - return Mono.empty(); - } - - @Override - public User getUser() { - return new UserMock(); - } - -} diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/SlashCommandInteractionMock.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/SlashCommandInteractionMock.java deleted file mode 100644 index 07ad550..0000000 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/SlashCommandInteractionMock.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.tomatentum.marinara.test.discord4j.mocks; - -import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; - -public class SlashCommandInteractionMock extends ChatInputInteractionEvent { - - public SlashCommandInteractionMock() { - super(null, null, null); - } - - @Override - public String getCommandName() { - return "test"; - } - -} diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/SlashCommandInteractionOptionMock.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/SlashCommandInteractionOptionMock.java deleted file mode 100644 index 2c67577..0000000 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/SlashCommandInteractionOptionMock.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.tomatentum.marinara.test.discord4j.mocks; - -import java.util.Optional; - -import discord4j.core.object.command.ApplicationCommandInteractionOption; -import discord4j.core.object.command.ApplicationCommandInteractionOptionValue; -import discord4j.core.object.command.ApplicationCommandOption.Type; - -public class SlashCommandInteractionOptionMock extends ApplicationCommandInteractionOption { - - public SlashCommandInteractionOptionMock() { - super(null, null, null, null); - } - - @Override - public String getName() { - return "foo"; - } - - @Override - public Optional getValue() { - return Optional.of(new ApplicationCommandInteractionOptionValue(null, null, Type.STRING.getValue(), "test", null)); - } - -} diff --git a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/UserMock.java b/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/UserMock.java deleted file mode 100644 index 0d8851d..0000000 --- a/wrapper/discord4j/src/test/java/net/tomatentum/marinara/test/discord4j/mocks/UserMock.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.tomatentum.marinara.test.discord4j.mocks; - -import discord4j.core.object.entity.User; - -public class UserMock extends User { - - public UserMock() { - super(null, null); - } - -}