added tests for utility module

refactored various commands and services
optimized code for message embeds
removed emoteUtils completely and moved to service
removed suggestion validation, because its now done via feature config
fixed regex for discord links
changed template to handle the case in which a member which suggested it originally left the server
added suggestion update exception in cases the message to edit, does not qualify as a suggestion
added check to not allow cross server quoting and added test case
refactored mocking for jda objects
This commit is contained in:
Sheldan
2020-06-07 00:22:42 +02:00
parent a577932c42
commit ac93440546
91 changed files with 3721 additions and 425 deletions

View File

@@ -1,15 +1,6 @@
package dev.sheldan.abstracto.test;
import dev.sheldan.abstracto.core.models.database.*;
import net.dv8tion.jda.api.entities.MessageType;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.internal.JDAImpl;
import net.dv8tion.jda.internal.entities.*;
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
public class MockUtils {
@@ -19,7 +10,7 @@ public class MockUtils {
public static AUserInAServer getUserObject(Long id, AServer server) {
AUser user = AUser.builder().id(id).build();
AUserInAServer createdUser = AUserInAServer.builder().userReference(user).serverReference(server).build();
AUserInAServer createdUser = AUserInAServer.builder().userReference(user).serverReference(server).userInServerId(id).build();
server.getUsers().add(createdUser);
return createdUser;
}
@@ -32,34 +23,11 @@ public class MockUtils {
return getServer(2L);
}
public static GuildImpl getGuild(AServer serverToUse, JDAImpl jda) {
return new GuildImpl(jda, serverToUse.getId());
}
public static MemberImpl getMockedMember(AServer serverToUse, AUserInAServer user, JDAImpl jda) {
UserImpl jdaUser = new UserImpl(user.getUserReference().getId(), jda);
GuildImpl jdaGuild = new GuildImpl(jda, serverToUse.getId());
return new MemberImpl(jdaGuild, jdaUser);
}
public static AChannel getTextChannel(AServer server, Long id) {
return AChannel.builder().id(id).server(server).deleted(false).type(AChannelType.TEXT).build();
}
public static TextChannelImpl getMockedTextChannel(Long id, GuildImpl guild) {
return new TextChannelImpl(id, guild);
}
public static ARole getRole(Long id, AServer server) {
return ARole.builder().server(server).id(id).build();
}
public static ReceivedMessage buildMockedMessage(long messageId, String text, MemberImpl member) {
Instant dateObj = Instant.ofEpochSecond(1590615937);
OffsetDateTime messageDate = OffsetDateTime.ofInstant(dateObj, ZoneId.systemDefault());
User user = member != null ? member.getUser() : null;
return new ReceivedMessage(messageId, null, MessageType.DEFAULT, false, false
, null, null, false, false, text, "nonce", user, member, null, messageDate,
new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), 0);
}
}

View File

@@ -9,11 +9,12 @@ import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.test.MockUtils;
import net.dv8tion.jda.internal.JDAImpl;
import net.dv8tion.jda.internal.entities.GuildImpl;
import net.dv8tion.jda.internal.entities.MemberImpl;
import net.dv8tion.jda.internal.entities.TextChannelImpl;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.TextChannel;
import org.junit.Assert;
import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.Arrays;
@@ -25,32 +26,32 @@ public class CommandTestUtilities {
}
public static void executeNoParametersTest(Command com, JDAImpl jda) {
CommandContext context = CommandTestUtilities.getNoParameters(jda);
public static void executeNoParametersTest(Command com) {
CommandContext context = CommandTestUtilities.getNoParameters();
com.execute(context);
}
public static void executeWrongParametersTest(Command com, JDAImpl jda) {
executeWrongParametersTest(com, jda, "");
public static void executeWrongParametersTest(Command com) {
executeWrongParametersTest(com, new ArrayList<>());
}
public static void executeWrongParametersTest(Command com, JDAImpl jda, Object value) {
CommandContext context = CommandTestUtilities.getWithParameters(jda, Arrays.asList(value));
public static void executeWrongParametersTest(Command com, Object value) {
CommandContext context = CommandTestUtilities.getWithParameters(Arrays.asList(value));
com.execute(context);
}
public static CommandContext getNoParameters(JDAImpl jda) {
public static CommandContext getNoParameters() {
AServer server = MockUtils.getServer();
AUserInAServer author = MockUtils.getUserObject(3L, server);
CommandContext context = CommandContext
.builder()
.build();
GuildImpl guild = MockUtils.getGuild(server, jda);
Guild guild = Mockito.mock(Guild.class);
context.setGuild(guild);
MemberImpl member = MockUtils.getMockedMember(server, author, jda);
Member member = Mockito.mock(Member.class);
context.setAuthor(member);
long channelId = 4L;
TextChannelImpl mockedTextChannel = MockUtils.getMockedTextChannel(channelId, guild);
TextChannel mockedTextChannel = Mockito.mock(TextChannel.class);
UserInitiatedServerContext userInitiatedContext = UserInitiatedServerContext
.builder()
.server(server)
@@ -62,15 +63,14 @@ public class CommandTestUtilities {
.messageChannel(mockedTextChannel)
.build();
context.setUserInitiatedContext(userInitiatedContext);
context.setJda(jda);
context.setChannel(mockedTextChannel);
context.setParameters(Parameters.builder().parameters(new ArrayList<>()).build());
context.setMessage(MockUtils.buildMockedMessage(3L, "text", member));
context.setMessage(Mockito.mock(Message.class));
return context;
}
public static CommandContext getWithParameters(JDAImpl jda, List<Object> parameters) {
CommandContext context = getNoParameters(jda);
public static CommandContext getWithParameters(List<Object> parameters) {
CommandContext context = getNoParameters();
context.getParameters().getParameters().addAll(parameters);
return context;
}