Test framework for the JDA Discord api wrapper.
Download the jar file from the release page.
<repository>
<id>coly</id>
<url>https://m2.coly.dev/releases</url>
</repository>
<dependency>
<groupId>dev.coly</groupId>
<artifactId>JDATesting</artifactId>
<version>VERSION</version>
</dependency>This project should be used to your JDA Discord bot using maven tests.
This examples use junit.
For default commands using GuildMessageReceivedEvent:
@TestpublicvoidtestAssertGuildMessageReceivedEvent() {
JDATesting.assertGuildMessageReceivedEvent(newTestEventListener(), ".ping", "Pong!");
}
publicstaticclassTestEventListenerimplementsEventListener {
@OverridepublicvoidonEvent(@NotNullGenericEventevent) {
if (eventinstanceofGuildMessageReceivedEvent) {
GuildMessageReceivedEvente = (GuildMessageReceivedEvent) event;
if (e.getMessage().getContentDisplay().equals(".ping")) {
e.getChannel().sendMessage("Pong!").queue();
}
}
}
}@TestpublicvoidtestTestGuildMessageReceivedEvent() {
try {
Assertions.assertEquals("Pong!",
JDATesting.testGuildMessageReceivedEvent(newTestEventListener(), ".ping").getContentRaw());
} catch (InterruptedExceptione) {
Assertions.fail(e);
}
}
publicstaticclassTestEventListenerimplementsEventListener {
@OverridepublicvoidonEvent(@NotNullGenericEventevent) {
if (eventinstanceofGuildMessageReceivedEvent) {
GuildMessageReceivedEvente = (GuildMessageReceivedEvent) event;
if (e.getMessage().getContentDisplay().equals(".ping")) {
e.getChannel().sendMessage("Pong!").queue();
}
}
}
}For Slash Commands:
@TestpublicvoidtestAssertSlashCommandEvent() {
JDATesting.assertSlashCommandEvent(newTestEventListener(), "ping", newHashMap<>(), "Pong!");
}
@TestpublicvoidtestAssertSlashCommandEventWithOptions() {
Map<String, Object> map = newHashMap<>();
map.put("bool", true);
map.put("str", "text");
map.put("number", 42);
map.put("user", JDAObjects.getFakeUser());
JDATesting.assertSlashCommandEvent(newTestEventListener(), "options", map, "bool: true - str: text - number: 42 - user: User#0000");
}
@TestpublicvoidtestAssertSlashCommandEventWithEmbeds() {
JDATesting.assertSlashCommandEvent(newTestEventListener(), "embed", newHashMap<>(), newArrayList<>(Collections.singleton(TestEventListener.getTestEmbed())));
}
publicclassTestEventListenerimplementsEventListener {
@OverridepublicvoidonEvent(@NotNullGenericEventevent) {
if (eventinstanceofSlashCommandEvent) {
SlashCommandEvente = (SlashCommandEvent) event;
switch (e.getName()) {
case"embed":
e.replyEmbeds(getTestEmbed()).queue();
break;
case"ping":
e.reply("Pong!").queue();
break;
case"options":
e.reply("bool: " + Objects.requireNonNull(e.getOption("bool")).getAsBoolean() +
" - str: " + Objects.requireNonNull(e.getOption("str")).getAsString() +
" - number: " + Objects.requireNonNull(e.getOption("number")).getAsLong() +
" - user: " + Objects.requireNonNull(e.getOption("user")).getAsUser().getAsTag()).queue();
}
}
}
publicstaticMessageEmbedgetTestEmbed() {
EmbedBuilderembedBuilder = newEmbedBuilder();
embedBuilder.setTitle("Test Embed");
embedBuilder.setAuthor("Coly Team");
embedBuilder.addField("Test Name", "Test Value", true);
returnembedBuilder.build();
}
}