mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-07-08 18:24:34 +00:00
[AB-184] adding various metrics to the system, organizing imports, changing some transactional behaviour
adding okhttp metrics, split bot service into multiple services (guild, message), unified some places that services are used in order to interact with the api, and not directly the objects (this is to make it easier for metric to be accurate)
This commit is contained in:
@@ -40,6 +40,12 @@
|
|||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||||
|
<artifactId>metrics-interface</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -124,7 +124,7 @@ public class AssignablePostReactionAdded implements AsyncReactionAddedListener {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void updateStoredAssignableRoles(Long assignableRolePlaceId, ServerUser serverUser, CachedReaction cachedReaction) {
|
public void updateStoredAssignableRoles(Long assignableRolePlaceId, ServerUser serverUser, CachedReaction cachedReaction) {
|
||||||
AssignableRolePlace place = assignableRolePlaceManagementService.findByPlaceId(assignableRolePlaceId);
|
AssignableRolePlace place = assignableRolePlaceManagementService.findByPlaceId(assignableRolePlaceId);
|
||||||
AUserInAServer userInAServer = userInServerManagementService.loadUser(serverUser);
|
AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(serverUser);
|
||||||
if(place.getUniqueRoles()) {
|
if(place.getUniqueRoles()) {
|
||||||
log.trace("Assignable role place {} has unique roles. Deleting all existing references.", assignableRolePlaceId);
|
log.trace("Assignable role place {} has unique roles. Deleting all existing references.", assignableRolePlaceId);
|
||||||
assignableRoleServiceBean.clearAllRolesOfUserInPlace(place, userInAServer);
|
assignableRoleServiceBean.clearAllRolesOfUserInPlace(place, userInAServer);
|
||||||
|
|||||||
@@ -17,12 +17,13 @@ import dev.sheldan.abstracto.core.command.exception.CommandParameterKeyValueWron
|
|||||||
import dev.sheldan.abstracto.core.exception.ChannelNotInGuildException;
|
import dev.sheldan.abstracto.core.exception.ChannelNotInGuildException;
|
||||||
import dev.sheldan.abstracto.core.exception.EmoteNotUsableException;
|
import dev.sheldan.abstracto.core.exception.EmoteNotUsableException;
|
||||||
import dev.sheldan.abstracto.core.models.FullEmote;
|
import dev.sheldan.abstracto.core.models.FullEmote;
|
||||||
import dev.sheldan.abstracto.core.models.database.*;
|
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||||
import dev.sheldan.abstracto.core.service.EmoteService;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.service.MessageService;
|
import dev.sheldan.abstracto.core.service.*;
|
||||||
import dev.sheldan.abstracto.core.service.management.*;
|
import dev.sheldan.abstracto.core.service.management.*;
|
||||||
|
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -49,6 +50,9 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
@Autowired
|
@Autowired
|
||||||
private AssignableRoleManagementService assignableRoleManagementServiceBean;
|
private AssignableRoleManagementService assignableRoleManagementServiceBean;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ReactionService reactionService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageService messageService;
|
private MessageService messageService;
|
||||||
|
|
||||||
@@ -59,7 +63,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
private ServerManagementService serverManagementService;
|
private ServerManagementService serverManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private GuildService guildService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmoteService emoteService;
|
private EmoteService emoteService;
|
||||||
@@ -172,7 +176,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
model.getRoles().add(newAssignableRole);
|
model.getRoles().add(newAssignableRole);
|
||||||
MessageToSend messageToSend = templateService.renderEmbedTemplate(ASSIGNABLE_ROLES_POST_TEMPLATE_KEY, model);
|
MessageToSend messageToSend = templateService.renderEmbedTemplate(ASSIGNABLE_ROLES_POST_TEMPLATE_KEY, model);
|
||||||
// add it to the last currently existing post
|
// add it to the last currently existing post
|
||||||
Optional<TextChannel> channelOptional = channelService.getTextChannelInGuild(server.getId(), latestPost.getUsedChannel().getId());
|
Optional<TextChannel> channelOptional = channelService.getTextChannelFromServerOptional(server.getId(), latestPost.getUsedChannel().getId());
|
||||||
if(channelOptional.isPresent()) {
|
if(channelOptional.isPresent()) {
|
||||||
TextChannel textChannel = channelOptional.get();
|
TextChannel textChannel = channelOptional.get();
|
||||||
if(latestPost.getAssignableRoles().size() < 20) {
|
if(latestPost.getAssignableRoles().size() < 20) {
|
||||||
@@ -203,10 +207,10 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
Long placeId = latestPost.getAssignablePlace().getId();
|
Long placeId = latestPost.getAssignablePlace().getId();
|
||||||
Long latestPostId = latestPost.getId();
|
Long latestPostId = latestPost.getId();
|
||||||
int messagePostSize = latestPost.getAssignablePlace().getMessagePosts().size();
|
int messagePostSize = latestPost.getAssignablePlace().getMessagePosts().size();
|
||||||
return textChannel.retrieveMessageById(latestPost.getId()).submit()
|
return channelService.retrieveMessageInChannel(textChannel, latestPostId)
|
||||||
.thenCompose(message -> {
|
.thenCompose(message -> {
|
||||||
log.trace("Adding reaction to message {} in server {} for assignable role place {}.", message.getId(), serverId, placeId);
|
log.trace("Adding reaction to message {} in server {} for assignable role place {}.", message.getId(), serverId, placeId);
|
||||||
return messageService.addReactionToMessageWithFuture(fakeEmote.getFakeEmote(), serverId, message);
|
return reactionService.addReactionToMessageAsync(fakeEmote.getFakeEmote(), serverId, message);
|
||||||
}).thenCompose(aVoid -> {
|
}).thenCompose(aVoid -> {
|
||||||
log.trace("Editing embed for assignable role place post {} in assignable role place {} in server {}.", latestPostId, placeId, serverId);
|
log.trace("Editing embed for assignable role place post {} in assignable role place {} in server {}.", latestPostId, placeId, serverId);
|
||||||
MessageEmbed embedToUse = messageToSend.getEmbeds().get(messagePostSize - 1);
|
MessageEmbed embedToUse = messageToSend.getEmbeds().get(messagePostSize - 1);
|
||||||
@@ -221,7 +225,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
return channelService.sendEmbedToChannel(embedToUse, textChannel)
|
return channelService.sendEmbedToChannel(embedToUse, textChannel)
|
||||||
.thenCompose(message -> {
|
.thenCompose(message -> {
|
||||||
log.trace("Adding reaction for role {} to newly created message {} for assignable role place {} in server {}.", roleId, message.getId(), placeId, serverId);
|
log.trace("Adding reaction for role {} to newly created message {} for assignable role place {} in server {}.", roleId, message.getId(), placeId, serverId);
|
||||||
return messageService.addReactionToMessageWithFuture(fakeEmote.getFakeEmote(), serverId, message)
|
return reactionService.addReactionToMessageAsync(fakeEmote.getFakeEmote(), serverId, message)
|
||||||
.thenAccept(aVoid ->
|
.thenAccept(aVoid ->
|
||||||
self.addNewlyCreatedAssignablePlacePost(placeId, description, roleId, serverId, message, fakeEmote)
|
self.addNewlyCreatedAssignablePlacePost(placeId, description, roleId, serverId, message, fakeEmote)
|
||||||
);
|
);
|
||||||
@@ -297,14 +301,14 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
AssignableRolePlacePost post = role.getAssignableRolePlacePost();
|
AssignableRolePlacePost post = role.getAssignableRolePlacePost();
|
||||||
if(post != null) {
|
if(post != null) {
|
||||||
AServer server = assignableRolePlace.getServer();
|
AServer server = assignableRolePlace.getServer();
|
||||||
TextChannel textChannel = botService.getTextChannelFromServer(server.getId(), post.getUsedChannel().getId());
|
TextChannel textChannel = channelService.getTextChannelFromServer(server.getId(), post.getUsedChannel().getId());
|
||||||
List<AssignableRole> assignableRoles = assignableRolePlace.getAssignableRoles();
|
List<AssignableRole> assignableRoles = assignableRolePlace.getAssignableRoles();
|
||||||
assignableRoles.sort(Comparator.comparing(AssignableRole::getPosition));
|
assignableRoles.sort(Comparator.comparing(AssignableRole::getPosition));
|
||||||
Long messageId = post.getId();
|
Long messageId = post.getId();
|
||||||
log.trace("Removing field describing assignable role {} in assignable role place {} from post {}.", role.getId(), assignableRolePlace.getId(), messageId);
|
log.trace("Removing field describing assignable role {} in assignable role place {} from post {}.", role.getId(), assignableRolePlace.getId(), messageId);
|
||||||
CompletableFuture<Message> fieldEditing = channelService.removeFieldFromMessage(textChannel, messageId, assignableRoles.indexOf(role));
|
CompletableFuture<Message> fieldEditing = channelService.removeFieldFromMessage(textChannel, messageId, assignableRoles.indexOf(role));
|
||||||
log.trace("Clearing reaction for emote {} on assignable role post {} in assignable role place {}.", role.getEmote().getId(), messageId, assignableRolePlace.getId());
|
log.trace("Clearing reaction for emote {} on assignable role post {} in assignable role place {}.", role.getEmote().getId(), messageId, assignableRolePlace.getId());
|
||||||
CompletableFuture<Void> reactionRemoval = messageService.clearReactionFromMessageWithFuture(role.getEmote(), assignableRolePlace.getServer().getId(), role.getAssignableRolePlacePost().getUsedChannel().getId(), role.getAssignableRolePlacePost().getId());
|
CompletableFuture<Void> reactionRemoval = reactionService.clearReactionFromMessageWithFuture(role.getEmote(), assignableRolePlace.getServer().getId(), role.getAssignableRolePlacePost().getUsedChannel().getId(), role.getAssignableRolePlacePost().getId());
|
||||||
return CompletableFuture.allOf(fieldEditing, reactionRemoval);
|
return CompletableFuture.allOf(fieldEditing, reactionRemoval);
|
||||||
} else {
|
} else {
|
||||||
// this case comes from the situation in which, the emote was deleted and he initial post setup failed
|
// this case comes from the situation in which, the emote was deleted and he initial post setup failed
|
||||||
@@ -324,8 +328,13 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
);
|
);
|
||||||
Long serverId = server.getId();
|
Long serverId = server.getId();
|
||||||
Long assignablePlaceId = assignableRolePlace.getId();
|
Long assignablePlaceId = assignableRolePlace.getId();
|
||||||
return CompletableFuture.allOf(oldPostDeletionFutures.toArray(new CompletableFuture[0]))
|
CompletableFuture<Void> messageFuture = FutureUtils.toSingleFutureGeneric(oldPostDeletionFutures);
|
||||||
.thenCompose(aVoid -> self.createAssignableRolePlacePosts(serverId, assignablePlaceId));
|
return messageFuture.whenComplete((unused, throwable) -> {
|
||||||
|
if(throwable != null) {
|
||||||
|
log.warn("Not able to delete old messages of assignable role place {} in server {}.", assignablePlaceId, serverId);
|
||||||
|
}
|
||||||
|
self.createAssignableRolePlacePosts(serverId, assignablePlaceId);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -346,7 +355,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
existingMessagePosts.sort(Comparator.comparingLong(AssignableRolePlacePost::getId));
|
existingMessagePosts.sort(Comparator.comparingLong(AssignableRolePlacePost::getId));
|
||||||
AssignableRolePlacePost latestPost = existingMessagePosts.get(place.getMessagePosts().size() - 1);
|
AssignableRolePlacePost latestPost = existingMessagePosts.get(place.getMessagePosts().size() - 1);
|
||||||
List<CompletableFuture<Message>> futures = new ArrayList<>();
|
List<CompletableFuture<Message>> futures = new ArrayList<>();
|
||||||
Optional<TextChannel> channelOptional = channelService.getTextChannelInGuild(place.getServer().getId(), latestPost.getUsedChannel().getId());
|
Optional<TextChannel> channelOptional = channelService.getTextChannelFromServerOptional(place.getServer().getId(), latestPost.getUsedChannel().getId());
|
||||||
if(channelOptional.isPresent()) {
|
if(channelOptional.isPresent()) {
|
||||||
TextChannel textChannel = channelOptional.get();
|
TextChannel textChannel = channelOptional.get();
|
||||||
Iterator<MessageEmbed> iterator = messageToSend.getEmbeds().iterator();
|
Iterator<MessageEmbed> iterator = messageToSend.getEmbeds().iterator();
|
||||||
@@ -369,7 +378,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
existingMessagePosts.sort(Comparator.comparingLong(AssignableRolePlacePost::getId));
|
existingMessagePosts.sort(Comparator.comparingLong(AssignableRolePlacePost::getId));
|
||||||
AssignableRolePlacePost firstPost = existingMessagePosts.get(0);
|
AssignableRolePlacePost firstPost = existingMessagePosts.get(0);
|
||||||
Long channelId = firstPost.getUsedChannel().getId();
|
Long channelId = firstPost.getUsedChannel().getId();
|
||||||
Optional<TextChannel> channelOptional = channelService.getTextChannelInGuild(place.getServer().getId(), channelId);
|
Optional<TextChannel> channelOptional = channelService.getTextChannelFromServerOptional(place.getServer().getId(), channelId);
|
||||||
if(channelOptional.isPresent()) {
|
if(channelOptional.isPresent()) {
|
||||||
log.info("Refreshing text for assignable role place {} in channel {} in post {}.", place.getId(), channelId, firstPost.getId());
|
log.info("Refreshing text for assignable role place {} in channel {} in post {}.", place.getId(), channelId, firstPost.getId());
|
||||||
return channelService.editEmbedMessageInAChannel(renderedMessage.getEmbeds().get(0), channelOptional.get(), firstPost.getId()).thenCompose(message -> CompletableFuture.completedFuture(null));
|
return channelService.editEmbedMessageInAChannel(renderedMessage.getEmbeds().get(0), channelOptional.get(), firstPost.getId()).thenCompose(message -> CompletableFuture.completedFuture(null));
|
||||||
@@ -554,12 +563,12 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
public void showAssignablePlaceConfig(AServer server, String name, MessageChannel channel) {
|
public void showAssignablePlaceConfig(AServer server, String name, MessageChannel channel) {
|
||||||
AssignableRolePlace place = rolePlaceManagementService.findByServerAndKey(server, name);
|
AssignableRolePlace place = rolePlaceManagementService.findByServerAndKey(server, name);
|
||||||
List<AssignablePostConfigRole> roles = new ArrayList<>();
|
List<AssignablePostConfigRole> roles = new ArrayList<>();
|
||||||
Guild guild = botService.getGuildById(server.getId());
|
Guild guild = guildService.getGuildById(server.getId());
|
||||||
log.info("Showing assignable role place config for place {} in channel {} on server {}.", place.getId(), channel.getId(), server.getId());
|
log.info("Showing assignable role place config for place {} in channel {} on server {}.", place.getId(), channel.getId(), server.getId());
|
||||||
List<AssignableRole> assignableRoles = place.getAssignableRoles().stream().sorted(Comparator.comparingInt(AssignableRole::getPosition)).collect(Collectors.toList());
|
List<AssignableRole> assignableRoles = place.getAssignableRoles().stream().sorted(Comparator.comparingInt(AssignableRole::getPosition)).collect(Collectors.toList());
|
||||||
for (AssignableRole role : assignableRoles) {
|
for (AssignableRole role : assignableRoles) {
|
||||||
AEmote emoteForRole = role.getEmote();
|
AEmote emoteForRole = role.getEmote();
|
||||||
Emote jdaEmoteForRole = botService.getEmote(emoteForRole).orElse(null);
|
Emote jdaEmoteForRole = emoteService.getEmote(emoteForRole).orElse(null);
|
||||||
Role jdaRole = guild.getRoleById(role.getRole().getId());
|
Role jdaRole = guild.getRoleById(role.getRole().getId());
|
||||||
AssignablePostConfigRole postRole = AssignablePostConfigRole
|
AssignablePostConfigRole postRole = AssignablePostConfigRole
|
||||||
.builder()
|
.builder()
|
||||||
@@ -617,7 +626,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
AEmote emoteToUseObject = emoteManagementService.loadEmote(assignableRole.getEmote().getId());
|
AEmote emoteToUseObject = emoteManagementService.loadEmote(assignableRole.getEmote().getId());
|
||||||
AssignableRolePlacePost assignablePlacePost = assignableRole.getAssignableRolePlacePost();
|
AssignableRolePlacePost assignablePlacePost = assignableRole.getAssignableRolePlacePost();
|
||||||
log.trace("Removing reaction with emote {} from user {} in server {} because of assignable role clearing.", emoteToUseObject.getId(), user.getUser().getUserReference().getId(), place.getServer().getId());
|
log.trace("Removing reaction with emote {} from user {} in server {} because of assignable role clearing.", emoteToUseObject.getId(), user.getUser().getUserReference().getId(), place.getServer().getId());
|
||||||
futures.add(messageService.removeReactionOfUserFromMessageWithFuture(emoteToUseObject, place.getServer().getId(),
|
futures.add(reactionService.removeReactionOfUserFromMessageWithFuture(emoteToUseObject, place.getServer().getId(),
|
||||||
assignablePlacePost.getUsedChannel().getId(), assignablePlacePost.getId(), user.getUser().getUserReference().getId()));
|
assignablePlacePost.getUsedChannel().getId(), assignablePlacePost.getId(), user.getUser().getUserReference().getId()));
|
||||||
});
|
});
|
||||||
return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
|
return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
|
||||||
@@ -690,7 +699,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
boolean startOfNewMessage = position > 0 && (position % 21) == 0;
|
boolean startOfNewMessage = position > 0 && (position % 21) == 0;
|
||||||
if(legitEntry) {
|
if(legitEntry) {
|
||||||
AEmote emoteForRole = current.getEmote();
|
AEmote emoteForRole = current.getEmote();
|
||||||
Emote jdaEmoteForRole = botService.getEmote(emoteForRole).orElse(null);
|
Emote jdaEmoteForRole = emoteService.getEmote(emoteForRole).orElse(null);
|
||||||
FullEmote fullEmote = FullEmote.builder().emote(jdaEmoteForRole).fakeEmote(emoteForRole).build();
|
FullEmote fullEmote = FullEmote.builder().emote(jdaEmoteForRole).fakeEmote(emoteForRole).build();
|
||||||
AssignablePostRole postRole = AssignablePostRole
|
AssignablePostRole postRole = AssignablePostRole
|
||||||
.builder()
|
.builder()
|
||||||
@@ -721,7 +730,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
@Transactional
|
@Transactional
|
||||||
public CompletableFuture<Void> createAssignableRolePlacePosts(Long serverId, Long assignablePlaceId) {
|
public CompletableFuture<Void> createAssignableRolePlacePosts(Long serverId, Long assignablePlaceId) {
|
||||||
AssignableRolePlace assignableRolePlace = rolePlaceManagementService.findByPlaceId(assignablePlaceId);
|
AssignableRolePlace assignableRolePlace = rolePlaceManagementService.findByPlaceId(assignablePlaceId);
|
||||||
Optional<TextChannel> channelOptional = botService.getTextChannelFromServerOptional(serverId, assignableRolePlace.getChannel().getId());
|
Optional<TextChannel> channelOptional = channelService.getTextChannelFromServerOptional(serverId, assignableRolePlace.getChannel().getId());
|
||||||
if(channelOptional.isPresent()) {
|
if(channelOptional.isPresent()) {
|
||||||
MessageChannel channel = channelOptional.get();
|
MessageChannel channel = channelOptional.get();
|
||||||
log.info("Sending assignable role place posts for place {} in channel {} in server {}.", assignableRolePlace.getId(), channel.getId(), serverId);
|
log.info("Sending assignable role place posts for place {} in channel {} in server {}.", assignableRolePlace.getId(), channel.getId(), serverId);
|
||||||
@@ -803,7 +812,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
log.info("Adding {} emotes to assignable role place post {} in server {}.", emotesToAdd.size(), message.getId(), server);
|
log.info("Adding {} emotes to assignable role place post {} in server {}.", emotesToAdd.size(), message.getId(), server);
|
||||||
emotesToAdd.forEach(emotesToUse -> {
|
emotesToAdd.forEach(emotesToUse -> {
|
||||||
AEmote emoteToUseObject = emoteManagementService.loadEmote(emotesToUse);
|
AEmote emoteToUseObject = emoteManagementService.loadEmote(emotesToUse);
|
||||||
futures.add(messageService.addReactionToMessageWithFuture(emoteToUseObject, server, message));
|
futures.add(reactionService.addReactionToMessageAsync(emoteToUseObject, server, message));
|
||||||
});
|
});
|
||||||
return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
|
return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,9 +6,12 @@ import dev.sheldan.abstracto.assignableroles.models.database.AssignedRoleUser;
|
|||||||
import dev.sheldan.abstracto.assignableroles.service.management.AssignableRoleManagementServiceBean;
|
import dev.sheldan.abstracto.assignableroles.service.management.AssignableRoleManagementServiceBean;
|
||||||
import dev.sheldan.abstracto.assignableroles.service.management.AssignedRoleUserManagementService;
|
import dev.sheldan.abstracto.assignableroles.service.management.AssignedRoleUserManagementService;
|
||||||
import dev.sheldan.abstracto.assignableroles.service.management.AssignedRoleUserManagementServiceBean;
|
import dev.sheldan.abstracto.assignableroles.service.management.AssignedRoleUserManagementServiceBean;
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.CounterMetric;
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.MetricService;
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.MetricTag;
|
||||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.RoleService;
|
import dev.sheldan.abstracto.core.service.RoleService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -17,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@@ -42,10 +47,30 @@ public class AssignableRoleServiceBean implements AssignableRoleService {
|
|||||||
private AssignableRoleServiceBean self;
|
private AssignableRoleServiceBean self;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MetricService metricService;
|
||||||
|
|
||||||
|
public static final String ASSIGNABLE_ROLES_METRIC = "assignable.roles";
|
||||||
|
public static final String ACTION = "action";
|
||||||
|
private static final CounterMetric ASSIGNABLE_ROLES_ASSIGNED =
|
||||||
|
CounterMetric
|
||||||
|
.builder()
|
||||||
|
.name(ASSIGNABLE_ROLES_METRIC)
|
||||||
|
.tagList(Arrays.asList(MetricTag.getTag(ACTION, "assigned")))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
private static final CounterMetric ASSIGNABLE_ROLES_REMOVED =
|
||||||
|
CounterMetric
|
||||||
|
.builder()
|
||||||
|
.name(ASSIGNABLE_ROLES_METRIC)
|
||||||
|
.tagList(Arrays.asList(MetricTag.getTag(ACTION, "removed")))
|
||||||
|
.build();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> assignAssignableRoleToUser(Long assignableRoleId, Member toAdd) {
|
public CompletableFuture<Void> assignAssignableRoleToUser(Long assignableRoleId, Member toAdd) {
|
||||||
|
metricService.incrementCounter(ASSIGNABLE_ROLES_ASSIGNED);
|
||||||
AssignableRole role = assignableRoleManagementServiceBean.getByAssignableRoleId(assignableRoleId);
|
AssignableRole role = assignableRoleManagementServiceBean.getByAssignableRoleId(assignableRoleId);
|
||||||
log.info("Assigning role {} to member {} in server {}.", assignableRoleId, toAdd.getId(), toAdd.getGuild().getId());
|
log.info("Assigning role {} to member {} in server {}.", assignableRoleId, toAdd.getId(), toAdd.getGuild().getId());
|
||||||
return roleService.addRoleToMemberFuture(toAdd, role.getRole());
|
return roleService.addRoleToMemberFuture(toAdd, role.getRole());
|
||||||
@@ -53,7 +78,7 @@ public class AssignableRoleServiceBean implements AssignableRoleService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> assignAssignableRoleToUser(Long assignableRoleId, ServerUser serverUser) {
|
public CompletableFuture<Void> assignAssignableRoleToUser(Long assignableRoleId, ServerUser serverUser) {
|
||||||
return botService.retrieveMemberInServer(serverUser).thenCompose(member -> assignAssignableRoleToUser(assignableRoleId, member));
|
return memberService.retrieveMemberInServer(serverUser).thenCompose(member -> assignAssignableRoleToUser(assignableRoleId, member));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -79,6 +104,7 @@ public class AssignableRoleServiceBean implements AssignableRoleService {
|
|||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> removeAssignableRoleFromUser(AssignableRole assignableRole, Member member) {
|
public CompletableFuture<Void> removeAssignableRoleFromUser(AssignableRole assignableRole, Member member) {
|
||||||
log.info("Removing assignable role {} from user {} in server {}.", assignableRole.getId(), member.getId(), member.getGuild().getId());
|
log.info("Removing assignable role {} from user {} in server {}.", assignableRole.getId(), member.getId(), member.getGuild().getId());
|
||||||
|
metricService.incrementCounter(ASSIGNABLE_ROLES_REMOVED);
|
||||||
return roleService.removeRoleFromMemberAsync(member, assignableRole.getRole());
|
return roleService.removeRoleFromMemberAsync(member, assignableRole.getRole());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +118,7 @@ public class AssignableRoleServiceBean implements AssignableRoleService {
|
|||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> removeAssignableRoleFromUser(AssignableRole assignableRole, AUserInAServer aUserInAServer) {
|
public CompletableFuture<Void> removeAssignableRoleFromUser(AssignableRole assignableRole, AUserInAServer aUserInAServer) {
|
||||||
Long assignableRoleId = assignableRole.getId();
|
Long assignableRoleId = assignableRole.getId();
|
||||||
return botService.getMemberInServerAsync(aUserInAServer).thenCompose(member ->
|
return memberService.getMemberInServerAsync(aUserInAServer).thenCompose(member ->
|
||||||
self.removeAssignableRoleFromUser(assignableRoleId, member)
|
self.removeAssignableRoleFromUser(assignableRoleId, member)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -100,7 +126,7 @@ public class AssignableRoleServiceBean implements AssignableRoleService {
|
|||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> fullyRemoveAssignableRoleFromUser(AssignableRole assignableRole, ServerUser serverUser) {
|
public CompletableFuture<Void> fullyRemoveAssignableRoleFromUser(AssignableRole assignableRole, ServerUser serverUser) {
|
||||||
Long assignableRoleId = assignableRole.getId();
|
Long assignableRoleId = assignableRole.getId();
|
||||||
return botService.retrieveMemberInServer(serverUser).thenCompose(member ->
|
return memberService.retrieveMemberInServer(serverUser).thenCompose(member ->
|
||||||
this.removeAssignableRoleFromUser(assignableRole, member)
|
this.removeAssignableRoleFromUser(assignableRole, member)
|
||||||
.thenAccept(aVoid -> self.persistRoleRemovalFromUser(assignableRoleId, member))
|
.thenAccept(aVoid -> self.persistRoleRemovalFromUser(assignableRoleId, member))
|
||||||
);
|
);
|
||||||
@@ -129,7 +155,7 @@ public class AssignableRoleServiceBean implements AssignableRoleService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void addRoleToUser(Long assignableRoleId, Member member) {
|
public void addRoleToUser(Long assignableRoleId, Member member) {
|
||||||
AssignableRole role = assignableRoleManagementServiceBean.getByAssignableRoleId(assignableRoleId);
|
AssignableRole role = assignableRoleManagementServiceBean.getByAssignableRoleId(assignableRoleId);
|
||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadUser(member);
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(member);
|
||||||
addRoleToUser(role, aUserInAServer);
|
addRoleToUser(role, aUserInAServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,7 +168,13 @@ public class AssignableRoleServiceBean implements AssignableRoleService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void persistRoleRemovalFromUser(Long assignableRoleId, Member member) {
|
public void persistRoleRemovalFromUser(Long assignableRoleId, Member member) {
|
||||||
AssignableRole role = assignableRoleManagementServiceBean.getByAssignableRoleId(assignableRoleId);
|
AssignableRole role = assignableRoleManagementServiceBean.getByAssignableRoleId(assignableRoleId);
|
||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadUser(member);
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(member);
|
||||||
removeRoleFromUser(role, aUserInAServer);
|
removeRoleFromUser(role, aUserInAServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
public void postConstruct() {
|
||||||
|
metricService.registerCounter(ASSIGNABLE_ROLES_ASSIGNED, "Assignable roles assigned.");
|
||||||
|
metricService.registerCounter(ASSIGNABLE_ROLES_REMOVED, "Assignable roles removed.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.assignableroles.service.management;
|
package dev.sheldan.abstracto.assignableroles.service.management;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlacePost;
|
|
||||||
import dev.sheldan.abstracto.assignableroles.exceptions.AssignablePlacePostNotFoundException;
|
import dev.sheldan.abstracto.assignableroles.exceptions.AssignablePlacePostNotFoundException;
|
||||||
|
import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlacePost;
|
||||||
import dev.sheldan.abstracto.assignableroles.repository.AssignableRolePlacePostRepository;
|
import dev.sheldan.abstracto.assignableroles.repository.AssignableRolePlacePostRepository;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public class AssignedRoleUserManagementServiceBean implements AssignedRoleUserMa
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<AssignedRoleUser> findByUserInServerOptional(ServerUser serverUser) {
|
public Optional<AssignedRoleUser> findByUserInServerOptional(ServerUser serverUser) {
|
||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadUser(serverUser);
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(serverUser);
|
||||||
return findByUserInServerOptional(aUserInAServer);
|
return findByUserInServerOptional(aUserInAServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package dev.sheldan.abstracto.assignableroles.models.exception;
|
|||||||
import dev.sheldan.abstracto.core.models.FullEmote;
|
import dev.sheldan.abstracto.core.models.FullEmote;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.assignableroles.models.exception;
|
|||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.assignableroles.models.exception;
|
|||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import dev.sheldan.abstracto.core.models.FullUserInServer;
|
|||||||
import dev.sheldan.abstracto.templating.Templatable;
|
import dev.sheldan.abstracto.templating.Templatable;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.assignableroles.models.exception;
|
|||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.assignableroles.models.exception;
|
|||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package dev.sheldan.abstracto.assignableroles.models.exception;
|
|||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package dev.sheldan.abstracto.assignableroles.models.exception;
|
|||||||
import dev.sheldan.abstracto.core.models.FullEmote;
|
import dev.sheldan.abstracto.core.models.FullEmote;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,12 @@
|
|||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||||
|
<artifactId>metrics-interface</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -33,7 +33,7 @@ public class DisableExpGain extends AbstractConditionableCommand {
|
|||||||
@Override
|
@Override
|
||||||
public CommandResult execute(CommandContext commandContext) {
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
Member para = (Member) commandContext.getParameters().getParameters().get(0);
|
Member para = (Member) commandContext.getParameters().getParameters().get(0);
|
||||||
AUserInAServer userInAServer = userInServerManagementService.loadUser(para);
|
AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(para);
|
||||||
aUserExperienceService.disableExperienceForUser(userInAServer);
|
aUserExperienceService.disableExperienceForUser(userInAServer);
|
||||||
return CommandResult.fromSuccess();
|
return CommandResult.fromSuccess();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public class EnableExpGain extends AbstractConditionableCommand {
|
|||||||
@Override
|
@Override
|
||||||
public CommandResult execute(CommandContext commandContext) {
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
Member para = (Member) commandContext.getParameters().getParameters().get(0);
|
Member para = (Member) commandContext.getParameters().getParameters().get(0);
|
||||||
AUserInAServer userInAServer = userInServerManagementService.loadUser(para);
|
AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(para);
|
||||||
aUserExperienceService.enableExperienceForUser(userInAServer);
|
aUserExperienceService.enableExperienceForUser(userInAServer);
|
||||||
return CommandResult.fromSuccess();
|
return CommandResult.fromSuccess();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public class LeaderBoardCommand extends AbstractConditionableCommand {
|
|||||||
List<CompletableFuture<LeaderBoardEntryModel>> completableFutures = converter.fromLeaderBoard(leaderBoard);
|
List<CompletableFuture<LeaderBoardEntryModel>> completableFutures = converter.fromLeaderBoard(leaderBoard);
|
||||||
futures.addAll(completableFutures);
|
futures.addAll(completableFutures);
|
||||||
log.info("Rendering leaderboard for page {} in server {} for user {}.", page, commandContext.getAuthor().getId(), commandContext.getGuild().getId());
|
log.info("Rendering leaderboard for page {} in server {} for user {}.", page, commandContext.getAuthor().getId(), commandContext.getGuild().getId());
|
||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadUser(commandContext.getAuthor());
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor());
|
||||||
LeaderBoardEntry userRank = userExperienceService.getRankOfUserInServer(aUserInAServer);
|
LeaderBoardEntry userRank = userExperienceService.getRankOfUserInServer(aUserInAServer);
|
||||||
CompletableFuture<LeaderBoardEntryModel> userRankFuture = converter.fromLeaderBoardEntry(userRank);
|
CompletableFuture<LeaderBoardEntryModel> userRankFuture = converter.fromLeaderBoardEntry(userRank);
|
||||||
futures.add(userRankFuture);
|
futures.add(userRankFuture);
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
|||||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||||
import dev.sheldan.abstracto.experience.models.templates.LeaderBoardEntryModel;
|
import dev.sheldan.abstracto.experience.models.templates.LeaderBoardEntryModel;
|
||||||
import dev.sheldan.abstracto.experience.models.templates.RankModel;
|
import dev.sheldan.abstracto.experience.models.templates.RankModel;
|
||||||
import dev.sheldan.abstracto.experience.service.ExperienceLevelService;
|
|
||||||
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
||||||
|
import dev.sheldan.abstracto.experience.service.ExperienceLevelService;
|
||||||
import dev.sheldan.abstracto.experience.service.management.UserExperienceManagementService;
|
import dev.sheldan.abstracto.experience.service.management.UserExperienceManagementService;
|
||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
@@ -67,7 +67,7 @@ public class Rank extends AbstractConditionableCommand {
|
|||||||
@Override
|
@Override
|
||||||
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
||||||
RankModel rankModel = (RankModel) ContextConverter.slimFromCommandContext(commandContext, RankModel.class);
|
RankModel rankModel = (RankModel) ContextConverter.slimFromCommandContext(commandContext, RankModel.class);
|
||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadUser(commandContext.getAuthor());
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor());
|
||||||
LeaderBoardEntry userRank = userExperienceService.getRankOfUserInServer(aUserInAServer);
|
LeaderBoardEntry userRank = userExperienceService.getRankOfUserInServer(aUserInAServer);
|
||||||
CompletableFuture<LeaderBoardEntryModel> future = converter.fromLeaderBoardEntry(userRank);
|
CompletableFuture<LeaderBoardEntryModel> future = converter.fromLeaderBoardEntry(userRank);
|
||||||
return future.thenCompose(leaderBoardEntryModel ->
|
return future.thenCompose(leaderBoardEntryModel ->
|
||||||
@@ -78,7 +78,7 @@ public class Rank extends AbstractConditionableCommand {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public CompletableFuture<Void> renderAndSendRank(CommandContext commandContext, RankModel rankModel, LeaderBoardEntryModel leaderBoardEntryModel) {
|
public CompletableFuture<Void> renderAndSendRank(CommandContext commandContext, RankModel rankModel, LeaderBoardEntryModel leaderBoardEntryModel) {
|
||||||
rankModel.setRankUser(leaderBoardEntryModel);
|
rankModel.setRankUser(leaderBoardEntryModel);
|
||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadUser(commandContext.getAuthor());
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor());
|
||||||
AUserExperience experienceObj = userExperienceManagementService.findUserInServer(aUserInAServer);
|
AUserExperience experienceObj = userExperienceManagementService.findUserInServer(aUserInAServer);
|
||||||
log.info("Rendering rank for user {} in server {}.", commandContext.getAuthor().getId(), commandContext.getGuild().getId());
|
log.info("Rendering rank for user {} in server {}.", commandContext.getAuthor().getId(), commandContext.getGuild().getId());
|
||||||
rankModel.setExperienceToNextLevel(experienceLevelService.calculateExperienceToNextLevel(experienceObj.getCurrentLevel().getLevel(), experienceObj.getExperience()));
|
rankModel.setExperienceToNextLevel(experienceLevelService.calculateExperienceToNextLevel(experienceObj.getCurrentLevel().getLevel(), experienceObj.getExperience()));
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.experience.converter;
|
package dev.sheldan.abstracto.experience.converter;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
||||||
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
||||||
import dev.sheldan.abstracto.experience.models.templates.LeaderBoardEntryModel;
|
import dev.sheldan.abstracto.experience.models.templates.LeaderBoardEntryModel;
|
||||||
@@ -22,7 +22,7 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
public class LeaderBoardModelConverter {
|
public class LeaderBoardModelConverter {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts the complete {@link LeaderBoard} into a list of {@link LeaderBoardEntryModel} which contain additional
|
* Converts the complete {@link LeaderBoard} into a list of {@link LeaderBoardEntryModel} which contain additional
|
||||||
@@ -50,7 +50,7 @@ public class LeaderBoardModelConverter {
|
|||||||
*/
|
*/
|
||||||
public CompletableFuture<LeaderBoardEntryModel> fromLeaderBoardEntry(LeaderBoardEntry leaderBoardEntry) {
|
public CompletableFuture<LeaderBoardEntryModel> fromLeaderBoardEntry(LeaderBoardEntry leaderBoardEntry) {
|
||||||
AUserInAServer entryUser = leaderBoardEntry.getExperience().getUser();
|
AUserInAServer entryUser = leaderBoardEntry.getExperience().getUser();
|
||||||
return botService.getMemberInServerAsync(entryUser.getServerReference().getId(), entryUser.getUserReference().getId()).thenApply(member ->
|
return memberService.getMemberInServerAsync(entryUser.getServerReference().getId(), entryUser.getUserReference().getId()).thenApply(member ->
|
||||||
LeaderBoardEntryModel
|
LeaderBoardEntryModel
|
||||||
.builder()
|
.builder()
|
||||||
.experience(leaderBoardEntry.getExperience())
|
.experience(leaderBoardEntry.getExperience())
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import org.springframework.scheduling.quartz.QuartzJobBean;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class ExperienceTrackerListener implements AsyncMessageReceivedListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(CachedMessage message) {
|
public void execute(CachedMessage message) {
|
||||||
AUserInAServer cause = userInServerManagementService.loadUser(message.getServerId(), message.getAuthor().getAuthorId());
|
AUserInAServer cause = userInServerManagementService.loadOrCreateUser(message.getServerId(), message.getAuthor().getAuthorId());
|
||||||
userExperienceService.addExperience(cause);
|
userExperienceService.addExperience(cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class JoiningUserRoleListener implements AsyncJoinListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(ServerUser serverUser) {
|
public void execute(ServerUser serverUser) {
|
||||||
AUserInAServer userInAServer = userInServerManagementService.loadUser(serverUser.getServerId(), serverUser.getUserId());
|
AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(serverUser.getServerId(), serverUser.getUserId());
|
||||||
AUserExperience userExperience = userExperienceManagementService.findUserInServer(userInAServer);
|
AUserExperience userExperience = userExperienceManagementService.findUserInServer(userInAServer);
|
||||||
Long userInServerId = userInAServer.getUserInServerId();
|
Long userInServerId = userInAServer.getUserInServerId();
|
||||||
if(userExperience != null) {
|
if(userExperience != null) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package dev.sheldan.abstracto.experience.repository;
|
package dev.sheldan.abstracto.experience.repository;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.experience.models.database.LeaderBoardEntryResult;
|
|
||||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||||
|
import dev.sheldan.abstracto.experience.models.database.LeaderBoardEntryResult;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
private UserInServerManagementService userInServerManagementService;
|
private UserInServerManagementService userInServerManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RunTimeExperienceService runTimeExperienceService;
|
private RunTimeExperienceService runTimeExperienceService;
|
||||||
@@ -184,9 +184,9 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
roles.sort(Comparator.comparing(role -> role.getLevel().getLevel()));
|
roles.sort(Comparator.comparing(role -> role.getLevel().getLevel()));
|
||||||
serverExp.getUserInServerIds().forEach(userInAServerId -> {
|
serverExp.getUserInServerIds().forEach(userInAServerId -> {
|
||||||
Integer gainedExperience = iterator.next();
|
Integer gainedExperience = iterator.next();
|
||||||
AUserInAServer userInAServer = userInServerManagementService.loadUser(userInAServerId);
|
AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(userInAServerId);
|
||||||
gainedExperience = (int) Math.floor(gainedExperience * multiplier);
|
gainedExperience = (int) Math.floor(gainedExperience * multiplier);
|
||||||
Member member = botService.getMemberInServer(userInAServer);
|
Member member = memberService.getMemberInServer(userInAServer);
|
||||||
if(member != null && !roleService.hasAnyOfTheRoles(member, disabledRoles)) {
|
if(member != null && !roleService.hasAnyOfTheRoles(member, disabledRoles)) {
|
||||||
log.trace("Handling {}. The user gains {}", userInAServer.getUserReference().getId(), gainedExperience);
|
log.trace("Handling {}. The user gains {}", userInAServer.getUserReference().getId(), gainedExperience);
|
||||||
Optional<AUserExperience> aUserExperienceOptional = userExperienceManagementService.findByUserInServerIdOptional(userInAServerId);
|
Optional<AUserExperience> aUserExperienceOptional = userExperienceManagementService.findByUserInServerIdOptional(userInAServerId);
|
||||||
@@ -242,7 +242,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private CompletableFuture<RoleCalculationResult> applyInitialRole(AUserInAServer aUserInAServer, List<AExperienceRole> roles, Integer currentLevel) {
|
private CompletableFuture<RoleCalculationResult> applyInitialRole(AUserInAServer aUserInAServer, List<AExperienceRole> roles, Integer currentLevel) {
|
||||||
if(!botService.isUserInGuild(aUserInAServer)) {
|
if(!memberService.isUserInGuild(aUserInAServer)) {
|
||||||
log.trace("User {} is not in server {} anymore. No role calculation done.", aUserInAServer.getUserInServerId(), aUserInAServer.getServerReference().getId());
|
log.trace("User {} is not in server {} anymore. No role calculation done.", aUserInAServer.getUserInServerId(), aUserInAServer.getServerReference().getId());
|
||||||
return CompletableFuture.completedFuture(RoleCalculationResult
|
return CompletableFuture.completedFuture(RoleCalculationResult
|
||||||
.builder()
|
.builder()
|
||||||
@@ -277,7 +277,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
log.info("Storing {} experience gain results.", resultFutures.size());
|
log.info("Storing {} experience gain results.", resultFutures.size());
|
||||||
HashMap<Long, List<AExperienceRole>> serverRoleMapping = new HashMap<>();
|
HashMap<Long, List<AExperienceRole>> serverRoleMapping = new HashMap<>();
|
||||||
resultFutures.forEach(experienceGainResult -> {
|
resultFutures.forEach(experienceGainResult -> {
|
||||||
AUserInAServer user = userInServerManagementService.loadUser(experienceGainResult.getUserInServerId());
|
AUserInAServer user = userInServerManagementService.loadOrCreateUser(experienceGainResult.getUserInServerId());
|
||||||
AUserExperience userExperience;
|
AUserExperience userExperience;
|
||||||
if(experienceGainResult.isCreateUserExperience()) {
|
if(experienceGainResult.isCreateUserExperience()) {
|
||||||
userExperience = userExperienceManagementService.createUserInServer(user);
|
userExperience = userExperienceManagementService.createUserInServer(user);
|
||||||
@@ -345,7 +345,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
// if the new role is already the one configured in the database
|
// if the new role is already the one configured in the database
|
||||||
Long userId = user.getUserReference().getId();
|
Long userId = user.getUserReference().getId();
|
||||||
Long oldUserExperienceRoleId = currentlyHasNoExperienceRole ? 0L : userExperience.getCurrentExperienceRole().getRole().getId();
|
Long oldUserExperienceRoleId = currentlyHasNoExperienceRole ? 0L : userExperience.getCurrentExperienceRole().getRole().getId();
|
||||||
return botService.getMemberInServerAsync(user).thenCompose(member -> {
|
return memberService.getMemberInServerAsync(user).thenCompose(member -> {
|
||||||
boolean userHasRoleAlready = roleService.memberHasRole(member, roleId);
|
boolean userHasRoleAlready = roleService.memberHasRole(member, roleId);
|
||||||
boolean userHasOldRole = false;
|
boolean userHasOldRole = false;
|
||||||
boolean rolesChanged = true;
|
boolean rolesChanged = true;
|
||||||
@@ -426,7 +426,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService {
|
|||||||
public void syncRolesInStorage(List<RoleCalculationResult> results) {
|
public void syncRolesInStorage(List<RoleCalculationResult> results) {
|
||||||
results.forEach(result -> {
|
results.forEach(result -> {
|
||||||
if(result != null) {
|
if(result != null) {
|
||||||
AUserInAServer user = userInServerManagementService.loadUser(result.getUserInServerId());
|
AUserInAServer user = userInServerManagementService.loadOrCreateUser(result.getUserInServerId());
|
||||||
AUserExperience userExperience = userExperienceManagementService.findUserInServer(user);
|
AUserExperience userExperience = userExperienceManagementService.findUserInServer(user);
|
||||||
log.trace("Updating experience role for {} in server {} to {}", user.getUserInServerId(), user.getServerReference().getId(), result.getExperienceRoleId());
|
log.trace("Updating experience role for {} in server {} to {}", user.getUserInServerId(), user.getServerReference().getId(), result.getExperienceRoleId());
|
||||||
if(result.getExperienceRoleId() != null) {
|
if(result.getExperienceRoleId() != null) {
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
package dev.sheldan.abstracto.experience.service;
|
package dev.sheldan.abstracto.experience.service;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.CounterMetric;
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.MetricService;
|
||||||
import dev.sheldan.abstracto.experience.models.ServerExperience;
|
import dev.sheldan.abstracto.experience.models.ServerExperience;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -11,6 +15,16 @@ import java.util.concurrent.locks.ReentrantLock;
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class RunTimeExperienceService {
|
public class RunTimeExperienceService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MetricService metricService;
|
||||||
|
|
||||||
|
public static final String EXPERIENCE_RUNTIME_STORAGE = "experience.runtime.storage";
|
||||||
|
private static final CounterMetric EXPERIENCE_RUNTIME_STORAGE_METRIC = CounterMetric
|
||||||
|
.builder()
|
||||||
|
.name(EXPERIENCE_RUNTIME_STORAGE)
|
||||||
|
.build();
|
||||||
|
|
||||||
private Map<Long, List<ServerExperience>> runtimeExperience = new HashMap<>();
|
private Map<Long, List<ServerExperience>> runtimeExperience = new HashMap<>();
|
||||||
private static final Lock lock = new ReentrantLock();
|
private static final Lock lock = new ReentrantLock();
|
||||||
public Map<Long, List<ServerExperience>> getRuntimeExperience() {
|
public Map<Long, List<ServerExperience>> getRuntimeExperience() {
|
||||||
@@ -25,4 +39,12 @@ public class RunTimeExperienceService {
|
|||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
@PostConstruct
|
||||||
|
public void postConstruct() {
|
||||||
|
metricService.registerGauge(EXPERIENCE_RUNTIME_STORAGE_METRIC, runtimeExperience, serverList -> serverList.values().stream()
|
||||||
|
.mapToInt(minuteEntry -> minuteEntry.stream()
|
||||||
|
.mapToInt(individualServerList -> individualServerList.getUserInServerIds().size()).sum()).sum(),
|
||||||
|
"Number of entries in runtime experience storage");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,9 +4,9 @@ import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
|||||||
import dev.sheldan.abstracto.core.exception.UserInServerNotFoundException;
|
import dev.sheldan.abstracto.core.exception.UserInServerNotFoundException;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.experience.models.database.LeaderBoardEntryResult;
|
|
||||||
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||||
|
import dev.sheldan.abstracto.experience.models.database.LeaderBoardEntryResult;
|
||||||
import dev.sheldan.abstracto.experience.repository.UserExperienceRepository;
|
import dev.sheldan.abstracto.experience.repository.UserExperienceRepository;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ package dev.sheldan.abstracto.experience;
|
|||||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AExperienceRole;
|
import dev.sheldan.abstracto.experience.models.database.AExperienceRole;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||||
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
||||||
import dev.sheldan.abstracto.experience.service.management.DisabledExpRoleManagementService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.experience.service.management.DisabledExpRoleManagementService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -15,10 +15,10 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class DisableExpGainTest {
|
public class DisableExpGainTest {
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ public class DisableExpGainTest {
|
|||||||
AUserInAServer parameterUser = Mockito.mock(AUserInAServer.class);
|
AUserInAServer parameterUser = Mockito.mock(AUserInAServer.class);
|
||||||
Member member = Mockito.mock(Member.class);
|
Member member = Mockito.mock(Member.class);
|
||||||
CommandContext context = CommandTestUtilities.enhanceWithParameters(noParameters, Arrays.asList(member));
|
CommandContext context = CommandTestUtilities.enhanceWithParameters(noParameters, Arrays.asList(member));
|
||||||
when(userInServerManagementService.loadUser(member)).thenReturn(parameterUser);
|
when(userInServerManagementService.loadOrCreateUser(member)).thenReturn(parameterUser);
|
||||||
CommandResult result = testUnit.execute(context);
|
CommandResult result = testUnit.execute(context);
|
||||||
verify(aUserExperienceService, times(1)).disableExperienceForUser(parameterUser);
|
verify(aUserExperienceService, times(1)).disableExperienceForUser(parameterUser);
|
||||||
CommandTestUtilities.checkSuccessfulCompletion(result);
|
CommandTestUtilities.checkSuccessfulCompletion(result);
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||||
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
||||||
import dev.sheldan.abstracto.experience.service.management.DisabledExpRoleManagementService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.experience.service.management.DisabledExpRoleManagementService;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -37,7 +37,7 @@ public class EnableExpGainTest {
|
|||||||
AUserInAServer parameterUser = Mockito.mock(AUserInAServer.class);
|
AUserInAServer parameterUser = Mockito.mock(AUserInAServer.class);
|
||||||
Member member = Mockito.mock(Member.class);
|
Member member = Mockito.mock(Member.class);
|
||||||
CommandContext context = CommandTestUtilities.enhanceWithParameters(noParameters, Arrays.asList(member));
|
CommandContext context = CommandTestUtilities.enhanceWithParameters(noParameters, Arrays.asList(member));
|
||||||
when(userInServerManagementService.loadUser(member)).thenReturn(parameterUser);
|
when(userInServerManagementService.loadOrCreateUser(member)).thenReturn(parameterUser);
|
||||||
CommandResult result = testUnit.execute(context);
|
CommandResult result = testUnit.execute(context);
|
||||||
verify(aUserExperienceService, times(1)).enableExperienceForUser(parameterUser);
|
verify(aUserExperienceService, times(1)).enableExperienceForUser(parameterUser);
|
||||||
CommandTestUtilities.checkSuccessfulCompletion(result);
|
CommandTestUtilities.checkSuccessfulCompletion(result);
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ import org.mockito.junit.MockitoJUnitRunner;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class ExpScaleTest {
|
public class ExpScaleTest {
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
|||||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.experience.converter.LeaderBoardModelConverter;
|
import dev.sheldan.abstracto.experience.converter.LeaderBoardModelConverter;
|
||||||
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
||||||
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
||||||
@@ -15,8 +17,6 @@ import dev.sheldan.abstracto.experience.models.templates.LeaderBoardModel;
|
|||||||
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -69,7 +69,7 @@ public class LeaderBoardCommandTest {
|
|||||||
AServer server = Mockito.mock(AServer.class);
|
AServer server = Mockito.mock(AServer.class);
|
||||||
when(serverManagementService.loadServer(context.getGuild())).thenReturn(server);
|
when(serverManagementService.loadServer(context.getGuild())).thenReturn(server);
|
||||||
AUserInAServer userInAServer = Mockito.mock(AUserInAServer.class);
|
AUserInAServer userInAServer = Mockito.mock(AUserInAServer.class);
|
||||||
when(userInServerManagementService.loadUser(context.getAuthor())).thenReturn(userInAServer);
|
when(userInServerManagementService.loadOrCreateUser(context.getAuthor())).thenReturn(userInAServer);
|
||||||
when(userExperienceService.findLeaderBoardData(server, expectedPage)).thenReturn(leaderBoard);
|
when(userExperienceService.findLeaderBoardData(server, expectedPage)).thenReturn(leaderBoard);
|
||||||
when(converter.fromLeaderBoard(leaderBoard)).thenReturn(new ArrayList<>());
|
when(converter.fromLeaderBoard(leaderBoard)).thenReturn(new ArrayList<>());
|
||||||
LeaderBoardEntry executingUserRank = LeaderBoardEntry.builder().build();
|
LeaderBoardEntry executingUserRank = LeaderBoardEntry.builder().build();
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ import dev.sheldan.abstracto.core.models.database.AServer;
|
|||||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
import dev.sheldan.abstracto.core.service.RoleService;
|
import dev.sheldan.abstracto.core.service.RoleService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.experience.models.database.ADisabledExpRole;
|
|
||||||
import dev.sheldan.abstracto.experience.models.templates.DisabledExperienceRolesModel;
|
|
||||||
import dev.sheldan.abstracto.experience.service.management.DisabledExpRoleManagementService;
|
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.experience.models.database.ADisabledExpRole;
|
||||||
|
import dev.sheldan.abstracto.experience.models.templates.DisabledExperienceRolesModel;
|
||||||
|
import dev.sheldan.abstracto.experience.service.management.DisabledExpRoleManagementService;
|
||||||
import net.dv8tion.jda.api.entities.Role;
|
import net.dv8tion.jda.api.entities.Role;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
|||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.experience.converter.LeaderBoardModelConverter;
|
import dev.sheldan.abstracto.experience.converter.LeaderBoardModelConverter;
|
||||||
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
||||||
@@ -16,8 +18,6 @@ import dev.sheldan.abstracto.experience.service.ExperienceLevelService;
|
|||||||
import dev.sheldan.abstracto.experience.service.management.UserExperienceManagementService;
|
import dev.sheldan.abstracto.experience.service.management.UserExperienceManagementService;
|
||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -68,7 +68,7 @@ public class RankTest {
|
|||||||
public void testRankExecution() {
|
public void testRankExecution() {
|
||||||
CommandContext context = CommandTestUtilities.getNoParameters();
|
CommandContext context = CommandTestUtilities.getNoParameters();
|
||||||
LeaderBoardEntry leaderBoardEntry = Mockito.mock(LeaderBoardEntry.class);
|
LeaderBoardEntry leaderBoardEntry = Mockito.mock(LeaderBoardEntry.class);
|
||||||
when(userInServerManagementService.loadUser(context.getAuthor())).thenReturn(aUserInAServer);
|
when(userInServerManagementService.loadOrCreateUser(context.getAuthor())).thenReturn(aUserInAServer);
|
||||||
when(userExperienceService.getRankOfUserInServer(aUserInAServer)).thenReturn(leaderBoardEntry);
|
when(userExperienceService.getRankOfUserInServer(aUserInAServer)).thenReturn(leaderBoardEntry);
|
||||||
LeaderBoardEntryModel leaderBoardEntryModel = Mockito.mock(LeaderBoardEntryModel.class);
|
LeaderBoardEntryModel leaderBoardEntryModel = Mockito.mock(LeaderBoardEntryModel.class);
|
||||||
when(converter.fromLeaderBoardEntry(leaderBoardEntry)).thenReturn(CompletableFuture.completedFuture(leaderBoardEntryModel));
|
when(converter.fromLeaderBoardEntry(leaderBoardEntry)).thenReturn(CompletableFuture.completedFuture(leaderBoardEntryModel));
|
||||||
@@ -89,7 +89,7 @@ public class RankTest {
|
|||||||
CommandContext context = CommandTestUtilities.getNoParameters();
|
CommandContext context = CommandTestUtilities.getNoParameters();
|
||||||
RankModel rankModel = Mockito.mock(RankModel.class);
|
RankModel rankModel = Mockito.mock(RankModel.class);
|
||||||
LeaderBoardEntryModel leaderBoardEntryModel = Mockito.mock(LeaderBoardEntryModel.class);
|
LeaderBoardEntryModel leaderBoardEntryModel = Mockito.mock(LeaderBoardEntryModel.class);
|
||||||
when(userInServerManagementService.loadUser(context.getAuthor())).thenReturn(aUserInAServer);
|
when(userInServerManagementService.loadOrCreateUser(context.getAuthor())).thenReturn(aUserInAServer);
|
||||||
when(userExperienceManagementService.findUserInServer(aUserInAServer)).thenReturn(aUserExperience);
|
when(userExperienceManagementService.findUserInServer(aUserInAServer)).thenReturn(aUserExperience);
|
||||||
when(experienceLevelService.calculateExperienceToNextLevel(currentLevelValue, currentExperience)).thenReturn(140L);
|
when(experienceLevelService.calculateExperienceToNextLevel(currentLevelValue, currentExperience)).thenReturn(140L);
|
||||||
MessageToSend messageToSend = Mockito.mock(MessageToSend.class);
|
MessageToSend messageToSend = Mockito.mock(MessageToSend.class);
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.service.RoleService;
|
import dev.sheldan.abstracto.core.service.RoleService;
|
||||||
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
||||||
import dev.sheldan.abstracto.experience.service.ExperienceRoleService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.experience.service.ExperienceRoleService;
|
||||||
import net.dv8tion.jda.api.entities.Role;
|
import net.dv8tion.jda.api.entities.Role;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -18,7 +18,7 @@ import org.mockito.junit.MockitoJUnitRunner;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class SetExpRoleTest {
|
public class SetExpRoleTest {
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
|||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.experience.service.AUserExperienceService;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -17,7 +17,7 @@ import org.mockito.junit.MockitoJUnitRunner;
|
|||||||
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class SyncRolesTest {
|
public class SyncRolesTest {
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||||
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
||||||
import dev.sheldan.abstracto.experience.service.ExperienceRoleService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.experience.service.ExperienceRoleService;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -17,7 +17,7 @@ import org.mockito.junit.MockitoJUnitRunner;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class UnSetExpRoleTest {
|
public class UnSetExpRoleTest {
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package dev.sheldan.abstracto.experience.converter;
|
package dev.sheldan.abstracto.experience.converter;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.experience.ExperienceRelatedTest;
|
import dev.sheldan.abstracto.experience.ExperienceRelatedTest;
|
||||||
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
||||||
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||||
import dev.sheldan.abstracto.experience.models.templates.LeaderBoardEntryModel;
|
import dev.sheldan.abstracto.experience.models.templates.LeaderBoardEntryModel;
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.entities.User;
|
import net.dv8tion.jda.api.entities.User;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
@@ -31,7 +31,7 @@ public class LeaderBoardModelConverterTest extends ExperienceRelatedTest {
|
|||||||
public LeaderBoardModelConverter testUnit;
|
public LeaderBoardModelConverter testUnit;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFromLeaderBoard() {
|
public void testFromLeaderBoard() {
|
||||||
@@ -45,8 +45,8 @@ public class LeaderBoardModelConverterTest extends ExperienceRelatedTest {
|
|||||||
List<LeaderBoardEntry> entries = Arrays.asList(entry, entry2);
|
List<LeaderBoardEntry> entries = Arrays.asList(entry, entry2);
|
||||||
LeaderBoard leaderBoard = LeaderBoard.builder().entries(entries).build();
|
LeaderBoard leaderBoard = LeaderBoard.builder().entries(entries).build();
|
||||||
Member member = Mockito.mock(Member.class);
|
Member member = Mockito.mock(Member.class);
|
||||||
when(botService.getMemberInServerAsync(server.getId(), entry.getExperience().getUser().getUserReference().getId())).thenReturn(CompletableFuture.completedFuture(member));
|
when(memberService.getMemberInServerAsync(server.getId(), entry.getExperience().getUser().getUserReference().getId())).thenReturn(CompletableFuture.completedFuture(member));
|
||||||
when(botService.getMemberInServerAsync(server.getId(), entry2.getExperience().getUser().getUserReference().getId())).thenReturn(CompletableFuture.completedFuture(member));
|
when(memberService.getMemberInServerAsync(server.getId(), entry2.getExperience().getUser().getUserReference().getId())).thenReturn(CompletableFuture.completedFuture(member));
|
||||||
List<CompletableFuture<LeaderBoardEntryModel>> leaderBoardEntryModels = testUnit.fromLeaderBoard(leaderBoard);
|
List<CompletableFuture<LeaderBoardEntryModel>> leaderBoardEntryModels = testUnit.fromLeaderBoard(leaderBoard);
|
||||||
LeaderBoardEntryModel firstEntry = leaderBoardEntryModels.get(0).join();
|
LeaderBoardEntryModel firstEntry = leaderBoardEntryModels.get(0).join();
|
||||||
Assert.assertEquals(firstRank, firstEntry.getRank().intValue());
|
Assert.assertEquals(firstRank, firstEntry.getRank().intValue());
|
||||||
@@ -67,7 +67,7 @@ public class LeaderBoardModelConverterTest extends ExperienceRelatedTest {
|
|||||||
User user = Mockito.mock(User.class);
|
User user = Mockito.mock(User.class);
|
||||||
when(user.getIdLong()).thenReturn(userId);
|
when(user.getIdLong()).thenReturn(userId);
|
||||||
when(member.getUser()).thenReturn(user);
|
when(member.getUser()).thenReturn(user);
|
||||||
when(botService.getMemberInServerAsync(server.getId(), experience.getUser().getUserReference().getId())).thenReturn(CompletableFuture.completedFuture(member));
|
when(memberService.getMemberInServerAsync(server.getId(), experience.getUser().getUserReference().getId())).thenReturn(CompletableFuture.completedFuture(member));
|
||||||
CompletableFuture<LeaderBoardEntryModel> leaderBoardEntryModel = testUnit.fromLeaderBoardEntry(entry);
|
CompletableFuture<LeaderBoardEntryModel> leaderBoardEntryModel = testUnit.fromLeaderBoardEntry(entry);
|
||||||
LeaderBoardEntryModel entryModel = leaderBoardEntryModel.join();
|
LeaderBoardEntryModel entryModel = leaderBoardEntryModel.join();
|
||||||
Assert.assertEquals(1, entryModel.getRank().intValue());
|
Assert.assertEquals(1, entryModel.getRank().intValue());
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class ExperienceTrackerListenerTest extends ExperienceRelatedTest {
|
|||||||
CachedMessage mockedMessage = Mockito.mock(CachedMessage.class);
|
CachedMessage mockedMessage = Mockito.mock(CachedMessage.class);
|
||||||
CachedAuthor cachedAuthor = Mockito.mock(CachedAuthor.class);
|
CachedAuthor cachedAuthor = Mockito.mock(CachedAuthor.class);
|
||||||
when(mockedMessage.getAuthor()).thenReturn(cachedAuthor);
|
when(mockedMessage.getAuthor()).thenReturn(cachedAuthor);
|
||||||
when(userInServerManagementService.loadUser(server.getId(), user.getId())).thenReturn(userInAServer);
|
when(userInServerManagementService.loadOrCreateUser(server.getId(), user.getId())).thenReturn(userInAServer);
|
||||||
testUnit.execute(mockedMessage);
|
testUnit.execute(mockedMessage);
|
||||||
verify(userExperienceService, times(1)).addExperience(userInAServer);
|
verify(userExperienceService, times(1)).addExperience(userInAServer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public class JoiningUserRoleListenerTest extends ExperienceRelatedTest {
|
|||||||
public void setup() {
|
public void setup() {
|
||||||
when(serverUser.getServerId()).thenReturn(SERVER_ID);
|
when(serverUser.getServerId()).thenReturn(SERVER_ID);
|
||||||
when(serverUser.getUserId()).thenReturn(USER_ID);
|
when(serverUser.getUserId()).thenReturn(USER_ID);
|
||||||
when(userInServerManagementService.loadUser(SERVER_ID, USER_ID)).thenReturn(aUserInAServer);
|
when(userInServerManagementService.loadOrCreateUser(SERVER_ID, USER_ID)).thenReturn(aUserInAServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
package dev.sheldan.abstracto.experience.service;
|
package dev.sheldan.abstracto.experience.service;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.*;
|
import dev.sheldan.abstracto.core.models.database.*;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.*;
|
||||||
import dev.sheldan.abstracto.core.service.ConfigService;
|
|
||||||
import dev.sheldan.abstracto.core.service.MessageService;
|
|
||||||
import dev.sheldan.abstracto.core.service.RoleService;
|
|
||||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.experience.ExperienceRelatedTest;
|
import dev.sheldan.abstracto.experience.ExperienceRelatedTest;
|
||||||
import dev.sheldan.abstracto.experience.config.features.ExperienceFeatureConfig;
|
import dev.sheldan.abstracto.experience.config.features.ExperienceFeatureConfig;
|
||||||
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
||||||
@@ -24,7 +22,6 @@ import dev.sheldan.abstracto.experience.service.management.ExperienceRoleManagem
|
|||||||
import dev.sheldan.abstracto.experience.service.management.UserExperienceManagementService;
|
import dev.sheldan.abstracto.experience.service.management.UserExperienceManagementService;
|
||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
@@ -33,11 +30,14 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.*;
|
import org.mockito.*;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.*;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
private DisabledExpRoleManagementService disabledExpRoleManagementService;
|
private DisabledExpRoleManagementService disabledExpRoleManagementService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private RunTimeExperienceService runTimeExperienceService;
|
private RunTimeExperienceService runTimeExperienceService;
|
||||||
@@ -233,7 +233,7 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
AExperienceRole previousExperienceRole = null;
|
AExperienceRole previousExperienceRole = null;
|
||||||
when(userExperience.getCurrentExperienceRole()).thenReturn(previousExperienceRole);
|
when(userExperience.getCurrentExperienceRole()).thenReturn(previousExperienceRole);
|
||||||
setupSimpleSingleUserTest(levels, experienceRoles);
|
setupSimpleSingleUserTest(levels, experienceRoles);
|
||||||
when(botService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
when(memberService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
||||||
AExperienceRole newRole = experienceRoles.get(1);
|
AExperienceRole newRole = experienceRoles.get(1);
|
||||||
when(experienceRoleService.calculateRole(eq(experienceRoles), any())).thenReturn(newRole);
|
when(experienceRoleService.calculateRole(eq(experienceRoles), any())).thenReturn(newRole);
|
||||||
|
|
||||||
@@ -254,7 +254,7 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
when(userExperience.getExperience()).thenReturn(50L);
|
when(userExperience.getExperience()).thenReturn(50L);
|
||||||
when(serverExperience.getUserInServerIds()).thenReturn(Arrays.asList(USER_IN_SERVER_ID));
|
when(serverExperience.getUserInServerIds()).thenReturn(Arrays.asList(USER_IN_SERVER_ID));
|
||||||
when(userExperience.getCurrentExperienceRole()).thenReturn(previousExperienceRole);
|
when(userExperience.getCurrentExperienceRole()).thenReturn(previousExperienceRole);
|
||||||
when(botService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
when(memberService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
||||||
AExperienceRole newRole = null;
|
AExperienceRole newRole = null;
|
||||||
when(experienceRoleService.calculateRole(eq(experienceRoles), any())).thenReturn(newRole);
|
when(experienceRoleService.calculateRole(eq(experienceRoles), any())).thenReturn(newRole);
|
||||||
|
|
||||||
@@ -274,7 +274,7 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
when(serverExperience.getUserInServerIds()).thenReturn(Arrays.asList(USER_IN_SERVER_ID));
|
when(serverExperience.getUserInServerIds()).thenReturn(Arrays.asList(USER_IN_SERVER_ID));
|
||||||
AExperienceRole previousExperienceRole = experienceRoles.get(0);
|
AExperienceRole previousExperienceRole = experienceRoles.get(0);
|
||||||
when(userExperience.getCurrentExperienceRole()).thenReturn(previousExperienceRole);
|
when(userExperience.getCurrentExperienceRole()).thenReturn(previousExperienceRole);
|
||||||
when(botService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
when(memberService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
||||||
AExperienceRole newRole = null;
|
AExperienceRole newRole = null;
|
||||||
when(experienceRoleService.calculateRole(eq(experienceRoles), any())).thenReturn(newRole);
|
when(experienceRoleService.calculateRole(eq(experienceRoles), any())).thenReturn(newRole);
|
||||||
|
|
||||||
@@ -295,10 +295,10 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
List<AExperienceRole> experienceRoles = getExperienceRoles(levels);
|
List<AExperienceRole> experienceRoles = getExperienceRoles(levels);
|
||||||
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(experienceRoles);
|
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(experienceRoles);
|
||||||
when(disabledExpRoleManagementService.getDisabledRolesForServer(server)).thenReturn(new ArrayList<>());
|
when(disabledExpRoleManagementService.getDisabledRolesForServer(server)).thenReturn(new ArrayList<>());
|
||||||
when(userInServerManagementService.loadUser(USER_IN_SERVER_ID)).thenReturn(aUserInAServer);
|
when(userInServerManagementService.loadOrCreateUser(USER_IN_SERVER_ID)).thenReturn(aUserInAServer);
|
||||||
when(aUserInAServer.getUserReference()).thenReturn(user);
|
when(aUserInAServer.getUserReference()).thenReturn(user);
|
||||||
when(serverExperience.getUserInServerIds()).thenReturn(Arrays.asList(USER_IN_SERVER_ID));
|
when(serverExperience.getUserInServerIds()).thenReturn(Arrays.asList(USER_IN_SERVER_ID));
|
||||||
when(botService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
when(memberService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
||||||
when(userExperience.getExperienceGainDisabled()).thenReturn(true);
|
when(userExperience.getExperienceGainDisabled()).thenReturn(true);
|
||||||
|
|
||||||
when(userExperienceManagementService.findByUserInServerIdOptional(USER_IN_SERVER_ID)).thenReturn(Optional.of(userExperience));
|
when(userExperienceManagementService.findByUserInServerIdOptional(USER_IN_SERVER_ID)).thenReturn(Optional.of(userExperience));
|
||||||
@@ -330,11 +330,11 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
Long userToUse = serverToUse.getUserInServerIds().get(0);
|
Long userToUse = serverToUse.getUserInServerIds().get(0);
|
||||||
when(userExperienceManagementService.findByUserInServerIdOptional(userToUse)).thenReturn(Optional.of(userExperience));
|
when(userExperienceManagementService.findByUserInServerIdOptional(userToUse)).thenReturn(Optional.of(userExperience));
|
||||||
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
||||||
when(userInServerManagementService.loadUser(userToUse)).thenReturn(aUserInAServer);
|
when(userInServerManagementService.loadOrCreateUser(userToUse)).thenReturn(aUserInAServer);
|
||||||
when(aUserInAServer.getUserReference()).thenReturn(user);
|
when(aUserInAServer.getUserReference()).thenReturn(user);
|
||||||
when(aUserInAServer.getServerReference()).thenReturn(server);
|
when(aUserInAServer.getServerReference()).thenReturn(server);
|
||||||
when(server.getId()).thenReturn(8L);
|
when(server.getId()).thenReturn(8L);
|
||||||
when(botService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
when(memberService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
||||||
when(roleService.hasAnyOfTheRoles(eq(firstMember), anyList())).thenReturn(false);
|
when(roleService.hasAnyOfTheRoles(eq(firstMember), anyList())).thenReturn(false);
|
||||||
when(user.getId()).thenReturn(7L);
|
when(user.getId()).thenReturn(7L);
|
||||||
CompletableFuture<Void> future = testUnit.handleExperienceGain(servers);
|
CompletableFuture<Void> future = testUnit.handleExperienceGain(servers);
|
||||||
@@ -354,11 +354,11 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
when(aUserInAServer.getServerReference()).thenReturn(server);
|
when(aUserInAServer.getServerReference()).thenReturn(server);
|
||||||
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
||||||
|
|
||||||
when(botService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
when(memberService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||||
|
|
||||||
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(usedExperienceRoles);
|
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(usedExperienceRoles);
|
||||||
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience.getLevelOrDefault())).thenReturn(afterRole);
|
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience.getLevelOrDefault())).thenReturn(afterRole);
|
||||||
when(botService.getMemberInServerAsync(userExperience.getUser())).thenReturn(CompletableFuture.completedFuture(firstMember));
|
when(memberService.getMemberInServerAsync(userExperience.getUser())).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||||
when(roleService.addRoleToMemberFuture(firstMember, afterRole.getRole().getId())).thenReturn(CompletableFuture.completedFuture(null));
|
when(roleService.addRoleToMemberFuture(firstMember, afterRole.getRole().getId())).thenReturn(CompletableFuture.completedFuture(null));
|
||||||
CompletableFuture<RoleCalculationResult> calculationFuture = testUnit.syncForSingleUser(userExperience);
|
CompletableFuture<RoleCalculationResult> calculationFuture = testUnit.syncForSingleUser(userExperience);
|
||||||
RoleCalculationResult result = calculationFuture.join();
|
RoleCalculationResult result = calculationFuture.join();
|
||||||
@@ -397,11 +397,11 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
when(aUserInAServer.getServerReference()).thenReturn(server);
|
when(aUserInAServer.getServerReference()).thenReturn(server);
|
||||||
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
||||||
|
|
||||||
when(botService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
when(memberService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||||
|
|
||||||
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(usedExperienceRoles);
|
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(usedExperienceRoles);
|
||||||
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience.getLevelOrDefault())).thenReturn(afterRole);
|
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience.getLevelOrDefault())).thenReturn(afterRole);
|
||||||
when(botService.getMemberInServerAsync(userExperience.getUser())).thenReturn(CompletableFuture.completedFuture(firstMember));
|
when(memberService.getMemberInServerAsync(userExperience.getUser())).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||||
when(roleService.memberHasRole(firstMember, afterRole.getRole().getId())).thenReturn(true);
|
when(roleService.memberHasRole(firstMember, afterRole.getRole().getId())).thenReturn(true);
|
||||||
CompletableFuture<RoleCalculationResult> calculationFuture = testUnit.syncForSingleUser(userExperience);
|
CompletableFuture<RoleCalculationResult> calculationFuture = testUnit.syncForSingleUser(userExperience);
|
||||||
RoleCalculationResult result = calculationFuture.join();
|
RoleCalculationResult result = calculationFuture.join();
|
||||||
@@ -421,11 +421,11 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
||||||
when(roleService.memberHasRole(firstMember, beforeRole.getRole().getId())).thenReturn(true);
|
when(roleService.memberHasRole(firstMember, beforeRole.getRole().getId())).thenReturn(true);
|
||||||
|
|
||||||
when(botService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
when(memberService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||||
|
|
||||||
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(usedExperienceRoles);
|
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(usedExperienceRoles);
|
||||||
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience.getLevelOrDefault())).thenReturn(afterRole);
|
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience.getLevelOrDefault())).thenReturn(afterRole);
|
||||||
when(botService.getMemberInServerAsync(userExperience.getUser())).thenReturn(CompletableFuture.completedFuture(firstMember));
|
when(memberService.getMemberInServerAsync(userExperience.getUser())).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||||
when(roleService.memberHasRole(firstMember, afterRole.getRole().getId())).thenReturn(false);
|
when(roleService.memberHasRole(firstMember, afterRole.getRole().getId())).thenReturn(false);
|
||||||
when(roleService.removeRoleFromMemberAsync(firstMember, beforeRole.getRole().getId())).thenReturn(CompletableFuture.completedFuture(null));
|
when(roleService.removeRoleFromMemberAsync(firstMember, beforeRole.getRole().getId())).thenReturn(CompletableFuture.completedFuture(null));
|
||||||
when(roleService.addRoleToMemberFuture(firstMember, afterRole.getRole().getId())).thenReturn(CompletableFuture.completedFuture(null));
|
when(roleService.addRoleToMemberFuture(firstMember, afterRole.getRole().getId())).thenReturn(CompletableFuture.completedFuture(null));
|
||||||
@@ -508,16 +508,16 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
|
|
||||||
when(userExperience2.getCurrentExperienceRole()).thenReturn(beforeRole);
|
when(userExperience2.getCurrentExperienceRole()).thenReturn(beforeRole);
|
||||||
|
|
||||||
when(botService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
when(memberService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||||
when(botService.getMemberInServerAsync(aUserInAServer2)).thenReturn(CompletableFuture.completedFuture(secondMember));
|
when(memberService.getMemberInServerAsync(aUserInAServer2)).thenReturn(CompletableFuture.completedFuture(secondMember));
|
||||||
|
|
||||||
when(server.getId()).thenReturn(15L);
|
when(server.getId()).thenReturn(15L);
|
||||||
|
|
||||||
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(usedExperienceRoles);
|
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(usedExperienceRoles);
|
||||||
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience.getLevelOrDefault())).thenReturn(afterRole);
|
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience.getLevelOrDefault())).thenReturn(afterRole);
|
||||||
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience2.getLevelOrDefault())).thenReturn(afterRole);
|
when(experienceRoleService.calculateRole(usedExperienceRoles, userExperience2.getLevelOrDefault())).thenReturn(afterRole);
|
||||||
when(botService.getMemberInServerAsync(userExperience.getUser())).thenReturn(CompletableFuture.completedFuture(firstMember));
|
when(memberService.getMemberInServerAsync(userExperience.getUser())).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||||
when(botService.getMemberInServerAsync(userExperience2.getUser())).thenReturn(CompletableFuture.completedFuture(secondMember));
|
when(memberService.getMemberInServerAsync(userExperience2.getUser())).thenReturn(CompletableFuture.completedFuture(secondMember));
|
||||||
when(roleService.memberHasRole(firstMember, afterRole.getRole().getId())).thenReturn(false);
|
when(roleService.memberHasRole(firstMember, afterRole.getRole().getId())).thenReturn(false);
|
||||||
when(roleService.memberHasRole(firstMember, beforeRole.getRole().getId())).thenReturn(true);
|
when(roleService.memberHasRole(firstMember, beforeRole.getRole().getId())).thenReturn(true);
|
||||||
when(roleService.memberHasRole(secondMember, afterRole.getRole().getId())).thenReturn(true);
|
when(roleService.memberHasRole(secondMember, afterRole.getRole().getId())).thenReturn(true);
|
||||||
@@ -615,11 +615,11 @@ public class AUserExperienceServiceBeanTest extends ExperienceRelatedTest {
|
|||||||
when(experienceLevelManagementService.getLevelConfig()).thenReturn(levels);
|
when(experienceLevelManagementService.getLevelConfig()).thenReturn(levels);
|
||||||
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(experienceRoles);
|
when(experienceRoleManagementService.getExperienceRolesForServer(server)).thenReturn(experienceRoles);
|
||||||
when(disabledExpRoleManagementService.getDisabledRolesForServer(server)).thenReturn(new ArrayList<>());
|
when(disabledExpRoleManagementService.getDisabledRolesForServer(server)).thenReturn(new ArrayList<>());
|
||||||
when(userInServerManagementService.loadUser(USER_IN_SERVER_ID)).thenReturn(aUserInAServer);
|
when(userInServerManagementService.loadOrCreateUser(USER_IN_SERVER_ID)).thenReturn(aUserInAServer);
|
||||||
when(user.getId()).thenReturn(USER_ID);
|
when(user.getId()).thenReturn(USER_ID);
|
||||||
when(aUserInAServer.getUserReference()).thenReturn(user);
|
when(aUserInAServer.getUserReference()).thenReturn(user);
|
||||||
when(botService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
when(memberService.getMemberInServer(aUserInAServer)).thenReturn(firstMember);
|
||||||
when(botService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
when(memberService.getMemberInServerAsync(aUserInAServer)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||||
when(userExperience.getExperience()).thenReturn(500L);
|
when(userExperience.getExperience()).thenReturn(500L);
|
||||||
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
when(userExperience.getUser()).thenReturn(aUserInAServer);
|
||||||
when(aUserInAServer.getUserReference()).thenReturn(user);
|
when(aUserInAServer.getUserReference()).thenReturn(user);
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ package dev.sheldan.abstracto.experience.service.management;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.experience.ExperienceRelatedTest;
|
import dev.sheldan.abstracto.experience.ExperienceRelatedTest;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AExperienceRole;
|
import dev.sheldan.abstracto.experience.models.database.AExperienceRole;
|
||||||
import dev.sheldan.abstracto.experience.repository.ExperienceRoleRepository;
|
import dev.sheldan.abstracto.experience.repository.ExperienceRoleRepository;
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ package dev.sheldan.abstracto.experience.service.management;
|
|||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.experience.ExperienceRelatedTest;
|
import dev.sheldan.abstracto.experience.ExperienceRelatedTest;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
||||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||||
import dev.sheldan.abstracto.experience.models.database.LeaderBoardEntryResult;
|
import dev.sheldan.abstracto.experience.models.database.LeaderBoardEntryResult;
|
||||||
import dev.sheldan.abstracto.experience.repository.UserExperienceRepository;
|
import dev.sheldan.abstracto.experience.repository.UserExperienceRepository;
|
||||||
import dev.sheldan.abstracto.experience.service.LeaderBoardEntryTestImpl;
|
import dev.sheldan.abstracto.experience.service.LeaderBoardEntryTestImpl;
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -23,7 +23,7 @@ import java.util.Arrays;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class UserExperienceManagementServiceBeanTest extends ExperienceRelatedTest {
|
public class UserExperienceManagementServiceBeanTest extends ExperienceRelatedTest {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.models.FullRole;
|
|||||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package dev.sheldan.abstracto.experience.models.templates;
|
|||||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package dev.sheldan.abstracto.experience.service.management;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.experience.models.database.LeaderBoardEntryResult;
|
|
||||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||||
|
import dev.sheldan.abstracto.experience.models.database.LeaderBoardEntryResult;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|||||||
@@ -54,6 +54,11 @@
|
|||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||||
|
<artifactId>metrics-interface</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -2,10 +2,12 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||||
import dev.sheldan.abstracto.core.command.condition.CommandCondition;
|
import dev.sheldan.abstracto.core.command.condition.CommandCondition;
|
||||||
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
|
||||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.*;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.ContextConverter;
|
||||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package dev.sheldan.abstracto.moderation.commands;
|
package dev.sheldan.abstracto.moderation.commands;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||||
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
|
||||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.*;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.ContextConverter;
|
||||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
|
|||||||
@@ -2,10 +2,12 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||||
import dev.sheldan.abstracto.core.command.condition.CommandCondition;
|
import dev.sheldan.abstracto.core.command.condition.CommandCondition;
|
||||||
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
|
||||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.*;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.ContextConverter;
|
||||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class MyWarnings extends AbstractConditionableCommand {
|
|||||||
@Override
|
@Override
|
||||||
public CommandResult execute(CommandContext commandContext) {
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
MyWarningsModel model = (MyWarningsModel) ContextConverter.fromCommandContext(commandContext, MyWarningsModel.class);
|
MyWarningsModel model = (MyWarningsModel) ContextConverter.fromCommandContext(commandContext, MyWarningsModel.class);
|
||||||
AUserInAServer userInAServer = userInServerManagementService.loadUser(commandContext.getAuthor());
|
AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor());
|
||||||
Long currentWarnCount = warnManagementService.getActiveWarnsForUser(userInAServer);
|
Long currentWarnCount = warnManagementService.getActiveWarnsForUser(userInAServer);
|
||||||
model.setCurrentWarnCount(currentWarnCount);
|
model.setCurrentWarnCount(currentWarnCount);
|
||||||
Long totalWarnCount = warnManagementService.getTotalWarnsForUser(userInAServer);
|
Long totalWarnCount = warnManagementService.getTotalWarnsForUser(userInAServer);
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||||
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
import dev.sheldan.abstracto.core.utils.ParseUtils;
|
import dev.sheldan.abstracto.core.utils.ParseUtils;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public class UserNoteCommand extends AbstractConditionableCommand {
|
|||||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
Member member = (Member) parameters.get(0);
|
Member member = (Member) parameters.get(0);
|
||||||
String text = (String) parameters.get(1);
|
String text = (String) parameters.get(1);
|
||||||
AUserInAServer userInAServer = userInServerManagementService.loadUser(member);
|
AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(member);
|
||||||
userNoteManagementService.createUserNote(userInAServer, text);
|
userNoteManagementService.createUserNote(userInAServer, text);
|
||||||
return CommandResult.fromSuccess();
|
return CommandResult.fromSuccess();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class UserNotes extends AbstractConditionableCommand {
|
|||||||
ListNotesModel model = (ListNotesModel) ContextConverter.fromCommandContext(commandContext, ListNotesModel.class);
|
ListNotesModel model = (ListNotesModel) ContextConverter.fromCommandContext(commandContext, ListNotesModel.class);
|
||||||
if(parameters.size() == 1) {
|
if(parameters.size() == 1) {
|
||||||
Member member = (Member) parameters.get(0);
|
Member member = (Member) parameters.get(0);
|
||||||
AUserInAServer userInAServer = userInServerManagementService.loadUser(member);
|
AUserInAServer userInAServer = userInServerManagementService.loadOrCreateUser(member);
|
||||||
userNotes = userNoteManagementService.loadNotesForUser(userInAServer);
|
userNotes = userNoteManagementService.loadNotesForUser(userInAServer);
|
||||||
FullUserInServer specifiedUser = FullUserInServer
|
FullUserInServer specifiedUser = FullUserInServer
|
||||||
.builder()
|
.builder()
|
||||||
|
|||||||
@@ -2,10 +2,12 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||||
import dev.sheldan.abstracto.core.command.condition.CommandCondition;
|
import dev.sheldan.abstracto.core.command.condition.CommandCondition;
|
||||||
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
|
||||||
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
import dev.sheldan.abstracto.core.command.execution.*;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.ContextConverter;
|
||||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class Warnings extends AbstractConditionableCommand {
|
|||||||
List<Warning> warnsToDisplay;
|
List<Warning> warnsToDisplay;
|
||||||
if(!commandContext.getParameters().getParameters().isEmpty()) {
|
if(!commandContext.getParameters().getParameters().isEmpty()) {
|
||||||
Member member = (Member) commandContext.getParameters().getParameters().get(0);
|
Member member = (Member) commandContext.getParameters().getParameters().get(0);
|
||||||
warnsToDisplay = warnManagementService.getAllWarnsForUser(userInServerManagementService.loadUser(member));
|
warnsToDisplay = warnManagementService.getAllWarnsForUser(userInServerManagementService.loadOrCreateUser(member));
|
||||||
} else {
|
} else {
|
||||||
AServer server = serverManagementService.loadServer(commandContext.getGuild());
|
AServer server = serverManagementService.loadServer(commandContext.getGuild());
|
||||||
warnsToDisplay = warnManagementService.getAllWarningsOfServer(server);
|
warnsToDisplay = warnManagementService.getAllWarningsOfServer(server);
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class UnMute extends AbstractConditionableCommand {
|
|||||||
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
||||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
Member member = (Member) parameters.get(0);
|
Member member = (Member) parameters.get(0);
|
||||||
AUserInAServer userToUnMute = userInServerManagementService.loadUser(member);
|
AUserInAServer userToUnMute = userInServerManagementService.loadOrCreateUser(member);
|
||||||
return muteService.unMuteUser(userToUnMute).thenApply(aVoid ->
|
return muteService.unMuteUser(userToUnMute).thenApply(aVoid ->
|
||||||
CommandResult.fromSuccess()
|
CommandResult.fromSuccess()
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.moderation.converter;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.FullUserInServer;
|
import dev.sheldan.abstracto.core.models.FullUserInServer;
|
||||||
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
||||||
@@ -15,8 +15,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@@ -25,7 +25,7 @@ public class UserNotesConverter {
|
|||||||
private UserInServerManagementService userInServerManagementService;
|
private UserInServerManagementService userInServerManagementService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserNotesConverter self;
|
private UserNotesConverter self;
|
||||||
@@ -38,7 +38,7 @@ public class UserNotesConverter {
|
|||||||
List<CompletableFuture<Member>> memberFutures = new ArrayList<>();
|
List<CompletableFuture<Member>> memberFutures = new ArrayList<>();
|
||||||
HashMap<ServerSpecificId, CompletableFuture<Member>> noteMemberMap = new HashMap<>();
|
HashMap<ServerSpecificId, CompletableFuture<Member>> noteMemberMap = new HashMap<>();
|
||||||
userNotes.forEach(userNote -> {
|
userNotes.forEach(userNote -> {
|
||||||
CompletableFuture<Member> memberFuture = botService.getMemberInServerAsync(userNote.getUser());
|
CompletableFuture<Member> memberFuture = memberService.getMemberInServerAsync(userNote.getUser());
|
||||||
memberFutures.add(memberFuture);
|
memberFutures.add(memberFuture);
|
||||||
noteMemberMap.put(userNote.getUserNoteId(), memberFuture);
|
noteMemberMap.put(userNote.getUserNoteId(), memberFuture);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.moderation.converter;
|
|||||||
import dev.sheldan.abstracto.core.models.FullUserInServer;
|
import dev.sheldan.abstracto.core.models.FullUserInServer;
|
||||||
import dev.sheldan.abstracto.core.models.FutureMemberPair;
|
import dev.sheldan.abstracto.core.models.FutureMemberPair;
|
||||||
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
@@ -16,15 +16,15 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class WarnEntryConverter {
|
public class WarnEntryConverter {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserInServerManagementService userInServerManagementService;
|
private UserInServerManagementService userInServerManagementService;
|
||||||
@@ -40,8 +40,8 @@ public class WarnEntryConverter {
|
|||||||
List<CompletableFuture<Member>> allFutures = new ArrayList<>();
|
List<CompletableFuture<Member>> allFutures = new ArrayList<>();
|
||||||
// TODO maybe optimize to not need to look into the cache twice
|
// TODO maybe optimize to not need to look into the cache twice
|
||||||
warnings.forEach(warning -> {
|
warnings.forEach(warning -> {
|
||||||
CompletableFuture<Member> warningMemberFuture = botService.getMemberInServerAsync(warning.getWarningUser());
|
CompletableFuture<Member> warningMemberFuture = memberService.getMemberInServerAsync(warning.getWarningUser());
|
||||||
CompletableFuture<Member> warnedMemberFuture = botService.getMemberInServerAsync(warning.getWarnedUser());
|
CompletableFuture<Member> warnedMemberFuture = memberService.getMemberInServerAsync(warning.getWarnedUser());
|
||||||
FutureMemberPair futurePair = FutureMemberPair.builder().firstMember(warningMemberFuture).secondMember(warnedMemberFuture).build();
|
FutureMemberPair futurePair = FutureMemberPair.builder().firstMember(warningMemberFuture).secondMember(warnedMemberFuture).build();
|
||||||
loadedWarnings.put(warning.getWarnId(), futurePair);
|
loadedWarnings.put(warning.getWarnId(), futurePair);
|
||||||
allFutures.add(warningMemberFuture);
|
allFutures.add(warningMemberFuture);
|
||||||
@@ -62,14 +62,14 @@ public class WarnEntryConverter {
|
|||||||
FullUserInServer warnedUser = FullUserInServer
|
FullUserInServer warnedUser = FullUserInServer
|
||||||
.builder()
|
.builder()
|
||||||
.member(warnedMember)
|
.member(warnedMember)
|
||||||
.aUserInAServer(userInServerManagementService.loadUser(warnedMember))
|
.aUserInAServer(userInServerManagementService.loadOrCreateUser(warnedMember))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Member warningMember = memberPair.getFirstMember().join();
|
Member warningMember = memberPair.getFirstMember().join();
|
||||||
FullUserInServer warningUser = FullUserInServer
|
FullUserInServer warningUser = FullUserInServer
|
||||||
.builder()
|
.builder()
|
||||||
.member(warningMember)
|
.member(warningMember)
|
||||||
.aUserInAServer(userInServerManagementService.loadUser(warningMember))
|
.aUserInAServer(userInServerManagementService.loadOrCreateUser(warningMember))
|
||||||
.build();
|
.build();
|
||||||
WarnEntry entry = WarnEntry
|
WarnEntry entry = WarnEntry
|
||||||
.builder()
|
.builder()
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import org.quartz.PersistJobDataAfterExecution;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.scheduling.quartz.QuartzJobBean;
|
import org.springframework.scheduling.quartz.QuartzJobBean;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Isolation;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -36,7 +37,7 @@ public class WarnDecayJob extends QuartzJobBean {
|
|||||||
private WarnService warnService;
|
private WarnService warnService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional(isolation = Isolation.SERIALIZABLE)
|
||||||
public void executeInternal(JobExecutionContext context) throws JobExecutionException {
|
public void executeInternal(JobExecutionContext context) throws JobExecutionException {
|
||||||
List<AServer> allServers = serverManagementService.getAllServers();
|
List<AServer> allServers = serverManagementService.getAllServers();
|
||||||
log.info("Executing warn decay job.");
|
log.info("Executing warn decay job.");
|
||||||
|
|||||||
@@ -4,8 +4,12 @@ import dev.sheldan.abstracto.core.config.FeatureEnum;
|
|||||||
import dev.sheldan.abstracto.core.config.ListenerPriority;
|
import dev.sheldan.abstracto.core.config.ListenerPriority;
|
||||||
import dev.sheldan.abstracto.core.execution.result.MessageReceivedListenerResult;
|
import dev.sheldan.abstracto.core.execution.result.MessageReceivedListenerResult;
|
||||||
import dev.sheldan.abstracto.core.listener.sync.jda.MessageReceivedListener;
|
import dev.sheldan.abstracto.core.listener.sync.jda.MessageReceivedListener;
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.CounterMetric;
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.MetricService;
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.MetricTag;
|
||||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||||
|
import dev.sheldan.abstracto.core.service.MessageService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
@@ -20,7 +24,9 @@ import net.dv8tion.jda.api.entities.Message;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@@ -41,6 +47,22 @@ public class InviteLinkFilterListener implements MessageReceivedListener {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MetricService metricService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MessageService messageService;
|
||||||
|
|
||||||
|
public static final String MODERATION_PURGE_METRIC = "invite.filter";
|
||||||
|
public static final String CONSEQUENCE = "consequence";
|
||||||
|
|
||||||
|
private static final CounterMetric MESSAGE_INVITE_FILTERED =
|
||||||
|
CounterMetric
|
||||||
|
.builder()
|
||||||
|
.tagList(Arrays.asList(MetricTag.getTag(CONSEQUENCE, "filtered")))
|
||||||
|
.name(MODERATION_PURGE_METRIC)
|
||||||
|
.build();
|
||||||
|
|
||||||
public static final String INVITE_LINK_DELETED_NOTIFICATION_EMBED_TEMPLATE_KEY = "invite_link_deleted_notification";
|
public static final String INVITE_LINK_DELETED_NOTIFICATION_EMBED_TEMPLATE_KEY = "invite_link_deleted_notification";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -60,7 +82,8 @@ public class InviteLinkFilterListener implements MessageReceivedListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(toDelete) {
|
if(toDelete) {
|
||||||
message.delete().queue();
|
metricService.incrementCounter(MESSAGE_INVITE_FILTERED);
|
||||||
|
messageService.deleteMessage(message);
|
||||||
boolean trackUsages = featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, serverId, InviteFilterMode.TRACK_USES);
|
boolean trackUsages = featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, serverId, InviteFilterMode.TRACK_USES);
|
||||||
if(trackUsages) {
|
if(trackUsages) {
|
||||||
codesToTrack.forEach(s -> inviteLinkFilterService.storeFilteredInviteLinkUsage(s, author));
|
codesToTrack.forEach(s -> inviteLinkFilterService.storeFilteredInviteLinkUsage(s, author));
|
||||||
@@ -111,4 +134,9 @@ public class InviteLinkFilterListener implements MessageReceivedListener {
|
|||||||
public Integer getPriority() {
|
public Integer getPriority() {
|
||||||
return ListenerPriority.HIGH;
|
return ListenerPriority.HIGH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
public void postConstruct() {
|
||||||
|
metricService.registerCounter(MESSAGE_INVITE_FILTERED, "Amount of messages containing an invite filtered");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.moderation.listener.async;
|
|||||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
import dev.sheldan.abstracto.core.listener.async.jda.AsyncJoinListener;
|
import dev.sheldan.abstracto.core.listener.async.jda.AsyncJoinListener;
|
||||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
||||||
@@ -30,7 +30,7 @@ public class JoinLogger implements AsyncJoinListener {
|
|||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private JoinLogger self;
|
private JoinLogger self;
|
||||||
@@ -44,7 +44,7 @@ public class JoinLogger implements AsyncJoinListener {
|
|||||||
@Override
|
@Override
|
||||||
public void execute(ServerUser serverUser) {
|
public void execute(ServerUser serverUser) {
|
||||||
log.info("User {} joined server {}.", serverUser.getUserId(), serverUser.getServerId());
|
log.info("User {} joined server {}.", serverUser.getUserId(), serverUser.getServerId());
|
||||||
botService.getMemberInServerAsync(serverUser.getServerId(), serverUser.getUserId()).thenAccept(member ->
|
memberService.getMemberInServerAsync(serverUser.getServerId(), serverUser.getUserId()).thenAccept(member ->
|
||||||
self.sendJoinLog(serverUser, member)
|
self.sendJoinLog(serverUser, member)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public class JoinMuteListener implements AsyncJoinListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(ServerUser serverUser) {
|
public void execute(ServerUser serverUser) {
|
||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadUser(serverUser.getServerId(), serverUser.getUserId());
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(serverUser.getServerId(), serverUser.getUserId());
|
||||||
if(muteManagementService.hasActiveMute(aUserInAServer)) {
|
if(muteManagementService.hasActiveMute(aUserInAServer)) {
|
||||||
log.info("Re-muting user {} which joined the server {}, because the mute has not ended yet.", serverUser.getUserId(), serverUser.getServerId());
|
log.info("Re-muting user {} which joined the server {}, because the mute has not ended yet.", serverUser.getUserId(), serverUser.getServerId());
|
||||||
muteService.applyMuteRole(aUserInAServer);
|
muteService.applyMuteRole(aUserInAServer);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.moderation.listener.async;
|
|||||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
import dev.sheldan.abstracto.core.listener.async.jda.AsyncLeaveListener;
|
import dev.sheldan.abstracto.core.listener.async.jda.AsyncLeaveListener;
|
||||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
||||||
@@ -32,7 +32,7 @@ public class LeaveLogger implements AsyncLeaveListener {
|
|||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private LeaveLogger self;
|
private LeaveLogger self;
|
||||||
@@ -48,7 +48,7 @@ public class LeaveLogger implements AsyncLeaveListener {
|
|||||||
@Override
|
@Override
|
||||||
public void execute(ServerUser serverUser) {
|
public void execute(ServerUser serverUser) {
|
||||||
log.info("User {} left server {}.", serverUser.getUserId(), serverUser.getServerId());
|
log.info("User {} left server {}.", serverUser.getUserId(), serverUser.getServerId());
|
||||||
botService.getMemberInServerAsync(serverUser.getServerId(), serverUser.getUserId()).thenAccept(member ->
|
memberService.getMemberInServerAsync(serverUser.getServerId(), serverUser.getUserId()).thenAccept(member ->
|
||||||
self.executeJoinLogging(serverUser, member)
|
self.executeJoinLogging(serverUser, member)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ package dev.sheldan.abstracto.moderation.listener.async;
|
|||||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
import dev.sheldan.abstracto.core.listener.async.jda.AsyncMessageDeletedListener;
|
import dev.sheldan.abstracto.core.listener.async.jda.AsyncMessageDeletedListener;
|
||||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
@@ -39,7 +40,10 @@ public class MessageDeleteLogListener implements AsyncMessageDeletedListener {
|
|||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelService channelService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ChannelManagementService channelManagementService;
|
private ChannelManagementService channelManagementService;
|
||||||
@@ -55,7 +59,7 @@ public class MessageDeleteLogListener implements AsyncMessageDeletedListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(CachedMessage messageFromCache) {
|
public void execute(CachedMessage messageFromCache) {
|
||||||
botService.getMemberInServerAsync(messageFromCache.getServerId(), messageFromCache.getAuthor().getAuthorId()).thenAccept(member ->
|
memberService.getMemberInServerAsync(messageFromCache.getServerId(), messageFromCache.getAuthor().getAuthorId()).thenAccept(member ->
|
||||||
self.executeListener(messageFromCache, member)
|
self.executeListener(messageFromCache, member)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -64,7 +68,7 @@ public class MessageDeleteLogListener implements AsyncMessageDeletedListener {
|
|||||||
public void executeListener(CachedMessage messageFromCache, Member authorMember) {
|
public void executeListener(CachedMessage messageFromCache, Member authorMember) {
|
||||||
log.trace("Message {} in channel {} in guild {} was deleted.", messageFromCache.getMessageId(), messageFromCache.getChannelId(), messageFromCache.getServerId());
|
log.trace("Message {} in channel {} in guild {} was deleted.", messageFromCache.getMessageId(), messageFromCache.getChannelId(), messageFromCache.getServerId());
|
||||||
|
|
||||||
TextChannel textChannel = botService.getTextChannelFromServer(messageFromCache.getServerId(), messageFromCache.getChannelId());
|
TextChannel textChannel = channelService.getTextChannelFromServer(messageFromCache.getServerId(), messageFromCache.getChannelId());
|
||||||
MessageDeletedLog logModel = MessageDeletedLog
|
MessageDeletedLog logModel = MessageDeletedLog
|
||||||
.builder()
|
.builder()
|
||||||
.cachedMessage(messageFromCache)
|
.cachedMessage(messageFromCache)
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ package dev.sheldan.abstracto.moderation.listener.async;
|
|||||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
import dev.sheldan.abstracto.core.listener.async.jda.AsyncMessageTextUpdatedListener;
|
import dev.sheldan.abstracto.core.listener.async.jda.AsyncMessageTextUpdatedListener;
|
||||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
||||||
@@ -28,7 +29,10 @@ public class MessageEditedListener implements AsyncMessageTextUpdatedListener {
|
|||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelService channelService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(CachedMessage messageBefore, CachedMessage messageAfter) {
|
public void execute(CachedMessage messageBefore, CachedMessage messageAfter) {
|
||||||
@@ -36,9 +40,9 @@ public class MessageEditedListener implements AsyncMessageTextUpdatedListener {
|
|||||||
log.trace("Message content was the same. Possible reason was: message was not in cache.");
|
log.trace("Message content was the same. Possible reason was: message was not in cache.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
botService.getMemberInServerAsync(messageAfter.getServerId(), messageAfter.getAuthor().getAuthorId()).thenAccept(author -> {
|
memberService.getMemberInServerAsync(messageAfter.getServerId(), messageAfter.getAuthor().getAuthorId()).thenAccept(author -> {
|
||||||
log.trace("Message {} in channel {} in guild {} was edited.", messageBefore.getMessageId(), messageBefore.getChannelId(), messageBefore.getServerId());
|
log.trace("Message {} in channel {} in guild {} was edited.", messageBefore.getMessageId(), messageBefore.getChannelId(), messageBefore.getServerId());
|
||||||
TextChannel textChannel = botService.getTextChannelFromServer(messageAfter.getServerId(), messageAfter.getChannelId());
|
TextChannel textChannel = channelService.getTextChannelFromServer(messageAfter.getServerId(), messageAfter.getChannelId());
|
||||||
MessageEditedLog log = MessageEditedLog
|
MessageEditedLog log = MessageEditedLog
|
||||||
.builder()
|
.builder()
|
||||||
.messageAfter(messageAfter)
|
.messageAfter(messageAfter)
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package dev.sheldan.abstracto.moderation.service;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.exception.GuildNotFoundException;
|
import dev.sheldan.abstracto.core.exception.GuildNotFoundException;
|
||||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
|
||||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||||
|
import dev.sheldan.abstracto.core.service.GuildService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
@@ -31,7 +31,7 @@ public class BanServiceBean implements BanService {
|
|||||||
public static final String BAN_ID_LOG_TEMPLATE = "banId_log";
|
public static final String BAN_ID_LOG_TEMPLATE = "banId_log";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private GuildService guildService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
@@ -72,7 +72,7 @@ public class BanServiceBean implements BanService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private CompletableFuture<Void> banUser(Long guildId, Long userId, String reason) {
|
private CompletableFuture<Void> banUser(Long guildId, Long userId, String reason) {
|
||||||
Optional<Guild> guildByIdOptional = botService.getGuildByIdOptional(guildId);
|
Optional<Guild> guildByIdOptional = guildService.getGuildByIdOptional(guildId);
|
||||||
if(guildByIdOptional.isPresent()) {
|
if(guildByIdOptional.isPresent()) {
|
||||||
return banUser(guildByIdOptional.get(), userId, reason);
|
return banUser(guildByIdOptional.get(), userId, reason);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -27,7 +27,10 @@ import dev.sheldan.abstracto.scheduling.service.SchedulerService;
|
|||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.*;
|
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.quartz.JobDataMap;
|
import org.quartz.JobDataMap;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
@@ -67,7 +70,10 @@ public class MuteServiceBean implements MuteService {
|
|||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private GuildService guildService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MemberService memberService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageService messageService;
|
private MessageService messageService;
|
||||||
@@ -94,6 +100,9 @@ public class MuteServiceBean implements MuteService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private FeatureModeService featureModeService;
|
private FeatureModeService featureModeService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelService channelService;
|
||||||
|
|
||||||
public static final String MUTE_LOG_TEMPLATE = "mute_log";
|
public static final String MUTE_LOG_TEMPLATE = "mute_log";
|
||||||
public static final String UN_MUTE_LOG_TEMPLATE = "unmute_log";
|
public static final String UN_MUTE_LOG_TEMPLATE = "unmute_log";
|
||||||
public static final String MUTE_NOTIFICATION_TEMPLATE = "mute_notification";
|
public static final String MUTE_NOTIFICATION_TEMPLATE = "mute_notification";
|
||||||
@@ -103,13 +112,13 @@ public class MuteServiceBean implements MuteService {
|
|||||||
public CompletableFuture<Void> muteMember(Member memberToMute, Member mutingMember, String reason, Instant unMuteDate, ServerChannelMessage message) {
|
public CompletableFuture<Void> muteMember(Member memberToMute, Member mutingMember, String reason, Instant unMuteDate, ServerChannelMessage message) {
|
||||||
FullUserInServer mutedUser = FullUserInServer
|
FullUserInServer mutedUser = FullUserInServer
|
||||||
.builder()
|
.builder()
|
||||||
.aUserInAServer(userInServerManagementService.loadUser(memberToMute))
|
.aUserInAServer(userInServerManagementService.loadOrCreateUser(memberToMute))
|
||||||
.member(memberToMute)
|
.member(memberToMute)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
FullUserInServer mutingUser = FullUserInServer
|
FullUserInServer mutingUser = FullUserInServer
|
||||||
.builder()
|
.builder()
|
||||||
.aUserInAServer(userInServerManagementService.loadUser(mutingMember))
|
.aUserInAServer(userInServerManagementService.loadOrCreateUser(mutingMember))
|
||||||
.member(mutingMember)
|
.member(mutingMember)
|
||||||
.build();
|
.build();
|
||||||
return muteUserInServer(mutedUser, mutingUser, reason, unMuteDate, message);
|
return muteUserInServer(mutedUser, mutingUser, reason, unMuteDate, message);
|
||||||
@@ -153,8 +162,8 @@ public class MuteServiceBean implements MuteService {
|
|||||||
String muteNotificationMessage = templateService.renderTemplate(MUTE_NOTIFICATION_TEMPLATE, muteNotification);
|
String muteNotificationMessage = templateService.renderTemplate(MUTE_NOTIFICATION_TEMPLATE, muteNotification);
|
||||||
CompletableFuture<Message> messageCompletableFuture = messageService.sendMessageToUser(memberBeingMuted.getUser(), muteNotificationMessage);
|
CompletableFuture<Message> messageCompletableFuture = messageService.sendMessageToUser(memberBeingMuted.getUser(), muteNotificationMessage);
|
||||||
messageCompletableFuture.exceptionally(throwable -> {
|
messageCompletableFuture.exceptionally(throwable -> {
|
||||||
TextChannel feedBackChannel = botService.getTextChannelFromServer(message.getServerId(), message.getChannelId());
|
TextChannel feedBackChannel = channelService.getTextChannelFromServer(message.getServerId(), message.getChannelId());
|
||||||
feedBackChannel.sendMessage(throwable.getMessage()).submit().whenComplete((exceptionMessage, innerThrowable) -> {
|
channelService.sendTextToChannel(throwable.getMessage(), feedBackChannel).whenComplete((exceptionMessage, innerThrowable) -> {
|
||||||
notificationFuture.complete(null);
|
notificationFuture.complete(null);
|
||||||
log.info("Successfully notified user {} in server {} about mute.", memberBeingMuted.getId(), memberBeingMuted.getGuild().getId());
|
log.info("Successfully notified user {} in server {} about mute.", memberBeingMuted.getId(), memberBeingMuted.getGuild().getId());
|
||||||
});
|
});
|
||||||
@@ -174,8 +183,8 @@ public class MuteServiceBean implements MuteService {
|
|||||||
.server(channel.getServer())
|
.server(channel.getServer())
|
||||||
.messageId(muteContext.getContext().getMessageId())
|
.messageId(muteContext.getContext().getMessageId())
|
||||||
.build();
|
.build();
|
||||||
AUserInAServer userInServerBeingMuted = userInServerManagementService.loadUser(muteContext.getMutedUser());
|
AUserInAServer userInServerBeingMuted = userInServerManagementService.loadOrCreateUser(muteContext.getMutedUser());
|
||||||
AUserInAServer userInServerMuting = userInServerManagementService.loadUser(muteContext.getMutedUser());
|
AUserInAServer userInServerMuting = userInServerManagementService.loadOrCreateUser(muteContext.getMutedUser());
|
||||||
muteManagementService.createMute(userInServerBeingMuted, userInServerMuting, muteContext.getReason(), muteContext.getMuteTargetDate(), origin, triggerKey, muteContext.getMuteId());
|
muteManagementService.createMute(userInServerBeingMuted, userInServerMuting, muteContext.getReason(), muteContext.getMuteTargetDate(), origin, triggerKey, muteContext.getMuteId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,9 +278,9 @@ public class MuteServiceBean implements MuteService {
|
|||||||
}
|
}
|
||||||
Mute mute = muteManagementService.getAMuteOf(aUserInAServer);
|
Mute mute = muteManagementService.getAMuteOf(aUserInAServer);
|
||||||
Long muteId = mute.getMuteId().getId();
|
Long muteId = mute.getMuteId().getId();
|
||||||
CompletableFuture<Member> mutingMemberFuture = botService.getMemberInServerAsync(mute.getMutingUser());
|
CompletableFuture<Member> mutingMemberFuture = memberService.getMemberInServerAsync(mute.getMutingUser());
|
||||||
CompletableFuture<Member> mutedMemberFuture = botService.getMemberInServerAsync(mute.getMutedUser());
|
CompletableFuture<Member> mutedMemberFuture = memberService.getMemberInServerAsync(mute.getMutedUser());
|
||||||
Guild guild = botService.getGuildById(mute.getMuteId().getServerId());
|
Guild guild = guildService.getGuildById(mute.getMuteId().getServerId());
|
||||||
return endMute(mute, false).thenCompose(unused ->
|
return endMute(mute, false).thenCompose(unused ->
|
||||||
CompletableFuture.allOf(mutingMemberFuture, mutedMemberFuture)
|
CompletableFuture.allOf(mutingMemberFuture, mutedMemberFuture)
|
||||||
).thenCompose(unused -> self.sendUnMuteLogForManualUnMute(muteId, mutingMemberFuture, mutedMemberFuture, guild));
|
).thenCompose(unused -> self.sendUnMuteLogForManualUnMute(muteId, mutingMemberFuture, mutedMemberFuture, guild));
|
||||||
@@ -302,17 +311,17 @@ public class MuteServiceBean implements MuteService {
|
|||||||
log.info("UnMuting {} in server {}", mute.getMutedUser().getUserReference().getId(), mutingServer.getId());
|
log.info("UnMuting {} in server {}", mute.getMutedUser().getUserReference().getId(), mutingServer.getId());
|
||||||
MuteRole muteRole = muteRoleManagementService.retrieveMuteRoleForServer(mutingServer);
|
MuteRole muteRole = muteRoleManagementService.retrieveMuteRoleForServer(mutingServer);
|
||||||
log.trace("Using the mute role {} mapping to role {}", muteRole.getId(), muteRole.getRole().getId());
|
log.trace("Using the mute role {} mapping to role {}", muteRole.getId(), muteRole.getRole().getId());
|
||||||
Guild guild = botService.getGuildById(mutingServer.getId());
|
Guild guild = guildService.getGuildById(mutingServer.getId());
|
||||||
CompletableFuture<Void> roleRemovalFuture;
|
CompletableFuture<Void> roleRemovalFuture;
|
||||||
// TODO replace with future, because caching
|
// TODO replace with future, because caching
|
||||||
if(botService.isUserInGuild(guild, mute.getMutedUser())) {
|
if(memberService.isUserInGuild(guild, mute.getMutedUser())) {
|
||||||
roleRemovalFuture = roleService.removeRoleFromUserFuture(mute.getMutedUser(), muteRole.getRole());
|
roleRemovalFuture = roleService.removeRoleFromUserFuture(mute.getMutedUser(), muteRole.getRole());
|
||||||
} else {
|
} else {
|
||||||
roleRemovalFuture = CompletableFuture.completedFuture(null);
|
roleRemovalFuture = CompletableFuture.completedFuture(null);
|
||||||
log.info("User to unMute left the guild.");
|
log.info("User to unMute left the guild.");
|
||||||
}
|
}
|
||||||
CompletableFuture<Member> mutingMemberFuture = botService.getMemberInServerAsync(mute.getMutingUser());
|
CompletableFuture<Member> mutingMemberFuture = memberService.getMemberInServerAsync(mute.getMutingUser());
|
||||||
CompletableFuture<Member> mutedMemberFuture = botService.getMemberInServerAsync(mute.getMutedUser());
|
CompletableFuture<Member> mutedMemberFuture = memberService.getMemberInServerAsync(mute.getMutedUser());
|
||||||
CompletableFuture<Void> finalFuture = new CompletableFuture<>();
|
CompletableFuture<Void> finalFuture = new CompletableFuture<>();
|
||||||
CompletableFuture.allOf(mutingMemberFuture, mutedMemberFuture, roleRemovalFuture, mutingMemberFuture, mutedMemberFuture).handle((aVoid, throwable) -> {
|
CompletableFuture.allOf(mutingMemberFuture, mutedMemberFuture, roleRemovalFuture, mutingMemberFuture, mutedMemberFuture).handle((aVoid, throwable) -> {
|
||||||
if(sendNotification) {
|
if(sendNotification) {
|
||||||
@@ -379,6 +388,7 @@ public class MuteServiceBean implements MuteService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void completelyUnMuteMember(Member member) {
|
public void completelyUnMuteMember(Member member) {
|
||||||
completelyUnMuteUser(userInServerManagementService.loadUser(member));
|
completelyUnMuteUser(userInServerManagementService.loadOrCreateUser(member));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package dev.sheldan.abstracto.moderation.service;
|
package dev.sheldan.abstracto.moderation.service;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.CounterMetric;
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.MetricService;
|
||||||
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
import dev.sheldan.abstracto.core.service.MessageService;
|
import dev.sheldan.abstracto.core.service.MessageService;
|
||||||
import dev.sheldan.abstracto.moderation.exception.NoMessageFoundException;
|
import dev.sheldan.abstracto.moderation.exception.NoMessageFoundException;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.PurgeStatusUpdateModel;
|
import dev.sheldan.abstracto.moderation.models.template.commands.PurgeStatusUpdateModel;
|
||||||
@@ -15,6 +18,7 @@ import net.dv8tion.jda.api.utils.TimeUtil;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
@@ -32,6 +36,20 @@ public class PurgeServiceBean implements PurgeService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MetricService metricService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelService channelService;
|
||||||
|
|
||||||
|
public static final String MODERATION_PURGE_METRIC = "moderation.purge";
|
||||||
|
|
||||||
|
private static final CounterMetric PURGE_MESSAGE_COUNTER_METRIC =
|
||||||
|
CounterMetric
|
||||||
|
.builder()
|
||||||
|
.name(MODERATION_PURGE_METRIC)
|
||||||
|
.build();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> purgeMessagesInChannel(Integer amountToDelete, TextChannel channel, Long startId, Member purgedMember) {
|
public CompletableFuture<Void> purgeMessagesInChannel(Integer amountToDelete, TextChannel channel, Long startId, Member purgedMember) {
|
||||||
return purgeMessages(amountToDelete, channel, startId, purgedMember, amountToDelete, 0, 0L);
|
return purgeMessages(amountToDelete, channel, startId, purgedMember, amountToDelete, 0, 0L);
|
||||||
@@ -45,9 +63,10 @@ public class PurgeServiceBean implements PurgeService {
|
|||||||
} else {
|
} else {
|
||||||
toDeleteInThisIteration = amountToDelete % PURGE_MAX_MESSAGES;
|
toDeleteInThisIteration = amountToDelete % PURGE_MAX_MESSAGES;
|
||||||
}
|
}
|
||||||
|
metricService.incrementCounter(PURGE_MESSAGE_COUNTER_METRIC, (long) toDeleteInThisIteration);
|
||||||
log.info("Purging {} this iteration ({}/{}) messages in channel {} in server {}.", toDeleteInThisIteration, currentCount, totalCount, channel.getId(), channel.getGuild().getId());
|
log.info("Purging {} this iteration ({}/{}) messages in channel {} in server {}.", toDeleteInThisIteration, currentCount, totalCount, channel.getId(), channel.getGuild().getId());
|
||||||
|
|
||||||
CompletableFuture<MessageHistory> historyFuture = channel.getHistoryBefore(startId, toDeleteInThisIteration).submit();
|
CompletableFuture<MessageHistory> historyFuture = channelService.getHistoryOfChannel(channel, startId, toDeleteInThisIteration);
|
||||||
CompletableFuture<Long> statusMessageFuture = getOrCreatedStatusMessage(channel, totalCount, statusMessageId);
|
CompletableFuture<Long> statusMessageFuture = getOrCreatedStatusMessage(channel, totalCount, statusMessageId);
|
||||||
|
|
||||||
CompletableFuture<Void> deletionFuture = new CompletableFuture<>();
|
CompletableFuture<Void> deletionFuture = new CompletableFuture<>();
|
||||||
@@ -60,6 +79,7 @@ public class PurgeServiceBean implements PurgeService {
|
|||||||
if(messagesToDeleteNow.size() == 0) {
|
if(messagesToDeleteNow.size() == 0) {
|
||||||
log.warn("No messages found to delete, all were filtered.");
|
log.warn("No messages found to delete, all were filtered.");
|
||||||
deletionFuture.completeExceptionally(new NoMessageFoundException());
|
deletionFuture.completeExceptionally(new NoMessageFoundException());
|
||||||
|
// TODO move to message service
|
||||||
channel.deleteMessageById(currentStatusMessageId).queueAfter(5, TimeUnit.SECONDS);
|
channel.deleteMessageById(currentStatusMessageId).queueAfter(5, TimeUnit.SECONDS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -71,7 +91,7 @@ public class PurgeServiceBean implements PurgeService {
|
|||||||
if (messagesToDeleteNow.size() > 1) {
|
if (messagesToDeleteNow.size() > 1) {
|
||||||
bulkDeleteMessages(channel, deletionFuture, messagesToDeleteNow, consumer);
|
bulkDeleteMessages(channel, deletionFuture, messagesToDeleteNow, consumer);
|
||||||
} else if (messagesToDeleteNow.size() == 1) {
|
} else if (messagesToDeleteNow.size() == 1) {
|
||||||
latestMessage.delete().queue(consumer, deletionFuture::completeExceptionally);
|
messageService.deleteMessage(latestMessage).queue(consumer, deletionFuture::completeExceptionally);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -88,9 +108,9 @@ public class PurgeServiceBean implements PurgeService {
|
|||||||
|
|
||||||
private void bulkDeleteMessages(TextChannel channel, CompletableFuture<Void> deletionFuture, List<Message> messagesToDeleteNow, Consumer<Void> consumer) {
|
private void bulkDeleteMessages(TextChannel channel, CompletableFuture<Void> deletionFuture, List<Message> messagesToDeleteNow, Consumer<Void> consumer) {
|
||||||
try {
|
try {
|
||||||
channel.deleteMessages(messagesToDeleteNow).queue(consumer, deletionFuture::completeExceptionally);
|
channelService.deleteMessagesInChannel(channel, messagesToDeleteNow).queue(consumer, deletionFuture::completeExceptionally);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
channel.sendMessage(e.getMessage()).queue();
|
channelService.sendTextToChannel(e.getMessage(), channel);
|
||||||
log.warn("Failed to bulk delete, message was most likely too old to delete by bulk.", e);
|
log.warn("Failed to bulk delete, message was most likely too old to delete by bulk.", e);
|
||||||
deletionFuture.complete(null);
|
deletionFuture.complete(null);
|
||||||
}
|
}
|
||||||
@@ -145,6 +165,7 @@ public class PurgeServiceBean implements PurgeService {
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
log.trace("Completed purging of {} messages.", totalCount);
|
log.trace("Completed purging of {} messages.", totalCount);
|
||||||
|
// Todo Move to message service
|
||||||
channel.deleteMessageById(currentStatusMessageId).queueAfter(5, TimeUnit.SECONDS);
|
channel.deleteMessageById(currentStatusMessageId).queueAfter(5, TimeUnit.SECONDS);
|
||||||
deletionFuture.complete(null);
|
deletionFuture.complete(null);
|
||||||
}
|
}
|
||||||
@@ -159,4 +180,9 @@ public class PurgeServiceBean implements PurgeService {
|
|||||||
public CompletableFuture<Void> purgeMessagesInChannel(Integer count, TextChannel channel, Message origin, Member purgingRestriction) {
|
public CompletableFuture<Void> purgeMessagesInChannel(Integer count, TextChannel channel, Message origin, Member purgingRestriction) {
|
||||||
return purgeMessagesInChannel(count, channel, origin.getIdLong(), purgingRestriction);
|
return purgeMessagesInChannel(count, channel, origin.getIdLong(), purgingRestriction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
public void postConstruct() {
|
||||||
|
metricService.registerCounter(PURGE_MESSAGE_COUNTER_METRIC, "Amount of messages deleted by purge.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.moderation.service;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.exception.ChannelNotInGuildException;
|
import dev.sheldan.abstracto.core.exception.ChannelNotInGuildException;
|
||||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -17,16 +17,16 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
public class SlowModeServiceBean implements SlowModeService {
|
public class SlowModeServiceBean implements SlowModeService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private ChannelService channelService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> setSlowMode(TextChannel channel, Duration duration) {
|
public CompletableFuture<Void> setSlowMode(TextChannel channel, Duration duration) {
|
||||||
log.info("Setting slow mode to {} in channel {} in server {}", duration.toString(), channel.getIdLong(), channel.getGuild().getId());
|
log.info("Setting slow mode to {} in channel {} in server {}", duration.toString(), channel.getIdLong(), channel.getGuild().getId());
|
||||||
long seconds = duration.getSeconds();
|
int seconds = (int) duration.getSeconds();
|
||||||
if(seconds > TextChannel.MAX_SLOWMODE) {
|
if(seconds > TextChannel.MAX_SLOWMODE) {
|
||||||
throw new IllegalArgumentException("Slow mode duration must be < " + TextChannel.MAX_SLOWMODE + " seconds.");
|
throw new IllegalArgumentException("Slow mode duration must be < " + TextChannel.MAX_SLOWMODE + " seconds.");
|
||||||
}
|
}
|
||||||
return channel.getManager().setSlowmode((int) seconds).submit();
|
return channelService.setSlowModeInChannel(channel, seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -36,7 +36,7 @@ public class SlowModeServiceBean implements SlowModeService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Void> setSlowMode(AChannel channel, Duration duration) {
|
public CompletableFuture<Void> setSlowMode(AChannel channel, Duration duration) {
|
||||||
Optional<TextChannel> textChannelOptional = botService.getTextChannelFromServerOptional(channel.getServer().getId(), channel.getId());
|
Optional<TextChannel> textChannelOptional = channelService.getTextChannelFromServerOptional(channel.getServer().getId(), channel.getId());
|
||||||
if(textChannelOptional.isPresent()) {
|
if(textChannelOptional.isPresent()) {
|
||||||
TextChannel textChannel = textChannelOptional.get();
|
TextChannel textChannel = textChannelOptional.get();
|
||||||
return this.setSlowMode(textChannel, duration);
|
return this.setSlowMode(textChannel, duration);
|
||||||
|
|||||||
@@ -3,38 +3,36 @@ package dev.sheldan.abstracto.moderation.service;
|
|||||||
import dev.sheldan.abstracto.core.models.FutureMemberPair;
|
import dev.sheldan.abstracto.core.models.FutureMemberPair;
|
||||||
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.*;
|
import dev.sheldan.abstracto.core.service.*;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.mode.WarnDecayMode;
|
|
||||||
import dev.sheldan.abstracto.moderation.config.features.WarningDecayFeature;
|
import dev.sheldan.abstracto.moderation.config.features.WarningDecayFeature;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.features.mode.WarnDecayMode;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.mode.WarningMode;
|
import dev.sheldan.abstracto.moderation.config.features.mode.WarningMode;
|
||||||
import dev.sheldan.abstracto.moderation.config.posttargets.WarnDecayPostTarget;
|
import dev.sheldan.abstracto.moderation.config.posttargets.WarnDecayPostTarget;
|
||||||
import dev.sheldan.abstracto.moderation.config.posttargets.WarningPostTarget;
|
import dev.sheldan.abstracto.moderation.config.posttargets.WarningPostTarget;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.job.WarnDecayLogModel;
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.job.WarnDecayWarning;
|
|
||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnContext;
|
import dev.sheldan.abstracto.moderation.models.template.commands.WarnContext;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotification;
|
import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotification;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
import dev.sheldan.abstracto.moderation.models.template.job.WarnDecayLogModel;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.template.job.WarnDecayWarning;
|
||||||
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.*;
|
import net.dv8tion.jda.api.entities.Guild;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.CompletionStage;
|
import java.util.concurrent.CompletionStage;
|
||||||
|
|
||||||
@@ -55,7 +53,10 @@ public class WarnServiceBean implements WarnService {
|
|||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GuildService guildService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageService messageService;
|
private MessageService messageService;
|
||||||
@@ -115,8 +116,8 @@ public class WarnServiceBean implements WarnService {
|
|||||||
public void persistWarning(WarnContext context) {
|
public void persistWarning(WarnContext context) {
|
||||||
log.info("Persisting warning {} in server {} for user {} by user {}.",
|
log.info("Persisting warning {} in server {} for user {} by user {}.",
|
||||||
context.getWarnId(), context.getGuild().getId(), context.getWarnedMember().getId(), context.getMember().getId());
|
context.getWarnId(), context.getGuild().getId(), context.getWarnedMember().getId(), context.getMember().getId());
|
||||||
AUserInAServer warnedUser = userInServerManagementService.loadUser(context.getWarnedMember());
|
AUserInAServer warnedUser = userInServerManagementService.loadOrCreateUser(context.getWarnedMember());
|
||||||
AUserInAServer warningUser = userInServerManagementService.loadUser(context.getMember());
|
AUserInAServer warningUser = userInServerManagementService.loadOrCreateUser(context.getMember());
|
||||||
warnManagementService.createWarning(warnedUser, warningUser, context.getReason(), context.getWarnId());
|
warnManagementService.createWarning(warnedUser, warningUser, context.getReason(), context.getWarnId());
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -179,8 +180,8 @@ public class WarnServiceBean implements WarnService {
|
|||||||
List<CompletableFuture<Member>> allFutures = new ArrayList<>();
|
List<CompletableFuture<Member>> allFutures = new ArrayList<>();
|
||||||
Long serverId = server.getId();
|
Long serverId = server.getId();
|
||||||
warningsToDecay.forEach(warning -> {
|
warningsToDecay.forEach(warning -> {
|
||||||
CompletableFuture<Member> warningMember = botService.getMemberInServerAsync(warning.getWarningUser());
|
CompletableFuture<Member> warningMember = memberService.getMemberInServerAsync(warning.getWarningUser());
|
||||||
CompletableFuture<Member> warnedMember = botService.getMemberInServerAsync(warning.getWarnedUser());
|
CompletableFuture<Member> warnedMember = memberService.getMemberInServerAsync(warning.getWarnedUser());
|
||||||
FutureMemberPair futurePair = FutureMemberPair.builder().firstMember(warningMember).secondMember(warnedMember).build();
|
FutureMemberPair futurePair = FutureMemberPair.builder().firstMember(warningMember).secondMember(warnedMember).build();
|
||||||
warningMembers.put(warning.getWarnId(), futurePair);
|
warningMembers.put(warning.getWarnId(), futurePair);
|
||||||
});
|
});
|
||||||
@@ -214,7 +215,7 @@ public class WarnServiceBean implements WarnService {
|
|||||||
});
|
});
|
||||||
WarnDecayLogModel warnDecayLogModel = WarnDecayLogModel
|
WarnDecayLogModel warnDecayLogModel = WarnDecayLogModel
|
||||||
.builder()
|
.builder()
|
||||||
.guild(botService.getGuildById(server.getId()))
|
.guild(guildService.getGuildById(server.getId()))
|
||||||
.warnings(warnDecayWarnings)
|
.warnings(warnDecayWarnings)
|
||||||
.build();
|
.build();
|
||||||
MessageToSend messageToSend = templateService.renderEmbedTemplate(WARN_DECAY_LOG_TEMPLATE_KEY, warnDecayLogModel);
|
MessageToSend messageToSend = templateService.renderEmbedTemplate(WARN_DECAY_LOG_TEMPLATE_KEY, warnDecayLogModel);
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ public class MuteManagementServiceBean implements MuteManagementService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasActiveMute(Member member) {
|
public boolean hasActiveMute(Member member) {
|
||||||
return muteRepository.existsByMutedUserAndMuteEndedFalse(userInServerManagementService.loadUser(member));
|
return muteRepository.existsByMutedUserAndMuteEndedFalse(userInServerManagementService.loadOrCreateUser(member));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -81,7 +81,7 @@ public class MuteManagementServiceBean implements MuteManagementService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Mute getAMuteOf(Member member) {
|
public Mute getAMuteOf(Member member) {
|
||||||
return getAMuteOf(userInServerManagementService.loadUser(member));
|
return getAMuteOf(userInServerManagementService.loadOrCreateUser(member));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package dev.sheldan.abstracto.moderation.service.management;
|
|||||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||||
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
import dev.sheldan.abstracto.moderation.repository.WarnRepository;
|
import dev.sheldan.abstracto.moderation.repository.WarnRepository;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|||||||
@@ -2,21 +2,25 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLog;
|
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLog;
|
||||||
import dev.sheldan.abstracto.moderation.service.BanService;
|
import dev.sheldan.abstracto.moderation.service.BanService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.*;
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import org.mockito.Captor;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.eq;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class BanIdTest {
|
public class BanIdTest {
|
||||||
|
|||||||
@@ -2,22 +2,26 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.BanLog;
|
import dev.sheldan.abstracto.moderation.models.template.commands.BanLog;
|
||||||
import dev.sheldan.abstracto.moderation.service.BanService;
|
import dev.sheldan.abstracto.moderation.service.BanService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.*;
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import org.mockito.Captor;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.eq;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class BanTest {
|
public class BanTest {
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.moderation.service.WarnService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.WarnService;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -16,7 +16,7 @@ import org.mockito.junit.MockitoJUnitRunner;
|
|||||||
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class DecayAllWarningsTest {
|
public class DecayAllWarningsTest {
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.moderation.service.WarnService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.WarnService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -17,7 +17,7 @@ import org.mockito.junit.MockitoJUnitRunner;
|
|||||||
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.ResultState;
|
import dev.sheldan.abstracto.core.command.execution.ResultState;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
||||||
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
|
||||||
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel;
|
import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel;
|
||||||
import dev.sheldan.abstracto.moderation.service.KickServiceBean;
|
import dev.sheldan.abstracto.moderation.service.KickServiceBean;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -20,7 +20,8 @@ import org.mockito.junit.MockitoJUnitRunner;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.eq;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class KickTest {
|
public class KickTest {
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
|||||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.WarningDecayFeature;
|
import dev.sheldan.abstracto.moderation.config.features.WarningDecayFeature;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.MyWarningsModel;
|
import dev.sheldan.abstracto.moderation.models.template.commands.MyWarningsModel;
|
||||||
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -48,7 +48,7 @@ public class MyWarningsTest {
|
|||||||
CommandContext noParameter = CommandTestUtilities.getNoParameters();
|
CommandContext noParameter = CommandTestUtilities.getNoParameters();
|
||||||
Long activeWarnCount = 8L;
|
Long activeWarnCount = 8L;
|
||||||
AUserInAServer aUserInAServer = Mockito.mock(AUserInAServer.class);
|
AUserInAServer aUserInAServer = Mockito.mock(AUserInAServer.class);
|
||||||
when(userInServerManagementService.loadUser(noParameter.getAuthor())).thenReturn(aUserInAServer);
|
when(userInServerManagementService.loadOrCreateUser(noParameter.getAuthor())).thenReturn(aUserInAServer);
|
||||||
when(warnManagementService.getActiveWarnsForUser(aUserInAServer)).thenReturn(activeWarnCount);
|
when(warnManagementService.getActiveWarnsForUser(aUserInAServer)).thenReturn(activeWarnCount);
|
||||||
Long totalWarnCount = 10L;
|
Long totalWarnCount = 10L;
|
||||||
when(warnManagementService.getTotalWarnsForUser(aUserInAServer)).thenReturn(totalWarnCount);
|
when(warnManagementService.getTotalWarnsForUser(aUserInAServer)).thenReturn(totalWarnCount);
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.command.execution.ResultState;
|
import dev.sheldan.abstracto.core.command.execution.ResultState;
|
||||||
import dev.sheldan.abstracto.moderation.service.PurgeService;
|
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.PurgeService;
|
||||||
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -19,7 +19,7 @@ import org.mockito.junit.MockitoJUnitRunner;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class PurgeTest {
|
public class PurgeTest {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.moderation.service.SlowModeService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.SlowModeService;
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -17,7 +17,7 @@ import java.time.Duration;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class SlowModeTest {
|
public class SlowModeTest {
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
|||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -40,7 +40,7 @@ public class UserNoteCommandTest {
|
|||||||
AUserInAServer userInAServer = MockUtils.getUserObject(4L, server);
|
AUserInAServer userInAServer = MockUtils.getUserObject(4L, server);
|
||||||
String note = "note";
|
String note = "note";
|
||||||
CommandContext parameters = CommandTestUtilities.getWithParameters(Arrays.asList(member, note));
|
CommandContext parameters = CommandTestUtilities.getWithParameters(Arrays.asList(member, note));
|
||||||
when(userInServerManagementService.loadUser(member)).thenReturn(userInAServer);
|
when(userInServerManagementService.loadOrCreateUser(member)).thenReturn(userInAServer);
|
||||||
CommandResult result = testUnit.execute(parameters);
|
CommandResult result = testUnit.execute(parameters);
|
||||||
verify(userNoteManagementService, times(1)).createUserNote(userInAServer, note);
|
verify(userNoteManagementService, times(1)).createUserNote(userInAServer, note);
|
||||||
CommandTestUtilities.checkSuccessfulCompletion(result);
|
CommandTestUtilities.checkSuccessfulCompletion(result);
|
||||||
|
|||||||
@@ -7,15 +7,15 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
|||||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.moderation.converter.UserNotesConverter;
|
import dev.sheldan.abstracto.moderation.converter.UserNotesConverter;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.ListNotesModel;
|
import dev.sheldan.abstracto.moderation.models.template.commands.ListNotesModel;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.NoteEntryModel;
|
import dev.sheldan.abstracto.moderation.models.template.commands.NoteEntryModel;
|
||||||
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -62,7 +62,7 @@ public class UserNotesTest {
|
|||||||
CommandContext parameters = CommandTestUtilities.getWithParameters(Arrays.asList(member));
|
CommandContext parameters = CommandTestUtilities.getWithParameters(Arrays.asList(member));
|
||||||
AServer server = Mockito.mock(AServer.class);
|
AServer server = Mockito.mock(AServer.class);
|
||||||
AUserInAServer userNoteUser = MockUtils.getUserObject(4L, server);
|
AUserInAServer userNoteUser = MockUtils.getUserObject(4L, server);
|
||||||
when(userInServerManagementService.loadUser(member)).thenReturn(userNoteUser);
|
when(userInServerManagementService.loadOrCreateUser(member)).thenReturn(userNoteUser);
|
||||||
UserNote firstNote = UserNote.builder().build();
|
UserNote firstNote = UserNote.builder().build();
|
||||||
UserNote secondNote = UserNote.builder().build();
|
UserNote secondNote = UserNote.builder().build();
|
||||||
List<UserNote> userNotes = Arrays.asList(firstNote, secondNote);
|
List<UserNote> userNotes = Arrays.asList(firstNote, secondNote);
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ package dev.sheldan.abstracto.moderation.commands;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnContext;
|
import dev.sheldan.abstracto.moderation.models.template.commands.WarnContext;
|
||||||
import dev.sheldan.abstracto.moderation.service.WarnService;
|
import dev.sheldan.abstracto.moderation.service.WarnService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -17,7 +17,7 @@ import org.mockito.junit.MockitoJUnitRunner;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class WarnTest {
|
public class WarnTest {
|
||||||
|
|||||||
@@ -9,13 +9,13 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
|||||||
import dev.sheldan.abstracto.core.service.PaginatorService;
|
import dev.sheldan.abstracto.core.service.PaginatorService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.moderation.converter.WarnEntryConverter;
|
import dev.sheldan.abstracto.moderation.converter.WarnEntryConverter;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnEntry;
|
import dev.sheldan.abstracto.moderation.models.template.commands.WarnEntry;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarningsModel;
|
import dev.sheldan.abstracto.moderation.models.template.commands.WarningsModel;
|
||||||
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -104,7 +104,7 @@ public class WarningsTest {
|
|||||||
WarnEntry secondModelWarning = Mockito.mock(WarnEntry.class);
|
WarnEntry secondModelWarning = Mockito.mock(WarnEntry.class);
|
||||||
List<Warning> warningsToDisplay = Arrays.asList(firstWarning, secondWarning);
|
List<Warning> warningsToDisplay = Arrays.asList(firstWarning, secondWarning);
|
||||||
List<WarnEntry> modelWarnings = Arrays.asList(firstModelWarning, secondModelWarning);
|
List<WarnEntry> modelWarnings = Arrays.asList(firstModelWarning, secondModelWarning);
|
||||||
when(userInServerManagementService.loadUser(member)).thenReturn(warnedUser);
|
when(userInServerManagementService.loadOrCreateUser(member)).thenReturn(warnedUser);
|
||||||
when(warnManagementService.getAllWarnsForUser(warnedUser)).thenReturn(warningsToDisplay);
|
when(warnManagementService.getAllWarnsForUser(warnedUser)).thenReturn(warningsToDisplay);
|
||||||
when(warnEntryConverter.fromWarnings(warningsToDisplay)).thenReturn(CompletableFuture.completedFuture(modelWarnings));
|
when(warnEntryConverter.fromWarnings(warningsToDisplay)).thenReturn(CompletableFuture.completedFuture(modelWarnings));
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ package dev.sheldan.abstracto.moderation.commands.mute;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.MuteContext;
|
|
||||||
import dev.sheldan.abstracto.moderation.service.MuteService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.template.commands.MuteContext;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.MuteService;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -17,7 +17,7 @@ import java.time.Duration;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class MuteTest {
|
public class MuteTest {
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import dev.sheldan.abstracto.core.models.database.ARole;
|
|||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
import dev.sheldan.abstracto.moderation.service.management.MuteRoleManagementService;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.management.MuteRoleManagementService;
|
||||||
import net.dv8tion.jda.api.entities.Role;
|
import net.dv8tion.jda.api.entities.Role;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
|||||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
||||||
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.moderation.exception.NoMuteFoundException;
|
import dev.sheldan.abstracto.moderation.exception.NoMuteFoundException;
|
||||||
import dev.sheldan.abstracto.moderation.service.MuteService;
|
import dev.sheldan.abstracto.moderation.service.MuteService;
|
||||||
import dev.sheldan.abstracto.moderation.service.management.MuteManagementService;
|
import dev.sheldan.abstracto.moderation.service.management.MuteManagementService;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
|
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -17,11 +17,10 @@ import org.mockito.InjectMocks;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class UnMuteTest {
|
public class UnMuteTest {
|
||||||
@@ -48,7 +47,7 @@ public class UnMuteTest {
|
|||||||
public void testUnMuteCommand() {
|
public void testUnMuteCommand() {
|
||||||
CommandContext parameters = CommandTestUtilities.getWithParameters(Arrays.asList(memberToUnMute));
|
CommandContext parameters = CommandTestUtilities.getWithParameters(Arrays.asList(memberToUnMute));
|
||||||
AUserInAServer user = AUserInAServer.builder().build();
|
AUserInAServer user = AUserInAServer.builder().build();
|
||||||
when(userInServerManagementService.loadUser(memberToUnMute)).thenReturn(user);
|
when(userInServerManagementService.loadOrCreateUser(memberToUnMute)).thenReturn(user);
|
||||||
when(muteService.unMuteUser(user)).thenReturn(CompletableFuture.completedFuture(null));
|
when(muteService.unMuteUser(user)).thenReturn(CompletableFuture.completedFuture(null));
|
||||||
CompletableFuture<CommandResult> result = testUnit.executeAsync(parameters);
|
CompletableFuture<CommandResult> result = testUnit.executeAsync(parameters);
|
||||||
CommandTestUtilities.checkSuccessfulCompletionAsync(result);
|
CommandTestUtilities.checkSuccessfulCompletionAsync(result);
|
||||||
@@ -58,7 +57,7 @@ public class UnMuteTest {
|
|||||||
public void testUnMuteCommandWithoutExistingMute() {
|
public void testUnMuteCommandWithoutExistingMute() {
|
||||||
CommandContext parameters = CommandTestUtilities.getWithParameters(Arrays.asList(memberToUnMute));
|
CommandContext parameters = CommandTestUtilities.getWithParameters(Arrays.asList(memberToUnMute));
|
||||||
AUserInAServer user = AUserInAServer.builder().build();
|
AUserInAServer user = AUserInAServer.builder().build();
|
||||||
when(userInServerManagementService.loadUser(memberToUnMute)).thenReturn(user);
|
when(userInServerManagementService.loadOrCreateUser(memberToUnMute)).thenReturn(user);
|
||||||
when(muteService.unMuteUser(user)).thenThrow(new NoMuteFoundException());
|
when(muteService.unMuteUser(user)).thenThrow(new NoMuteFoundException());
|
||||||
testUnit.executeAsync(parameters);
|
testUnit.executeAsync(parameters);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ package dev.sheldan.abstracto.moderation.converter;
|
|||||||
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.NoteEntryModel;
|
import dev.sheldan.abstracto.moderation.models.template.commands.NoteEntryModel;
|
||||||
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -36,7 +36,7 @@ public class UserNotesConverterTest {
|
|||||||
private UserInServerManagementService userInServerManagementService;
|
private UserInServerManagementService userInServerManagementService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private UserNotesConverter self;
|
private UserNotesConverter self;
|
||||||
@@ -55,7 +55,7 @@ public class UserNotesConverterTest {
|
|||||||
AServer server = MockUtils.getServer();
|
AServer server = MockUtils.getServer();
|
||||||
AUserInAServer userInAServer = MockUtils.getUserObject(4L, server);
|
AUserInAServer userInAServer = MockUtils.getUserObject(4L, server);
|
||||||
Member member = Mockito.mock(Member.class);
|
Member member = Mockito.mock(Member.class);
|
||||||
when(botService.getMemberInServerAsync(userInAServer)).thenReturn(CompletableFuture.completedFuture(member));
|
when(memberService.getMemberInServerAsync(userInAServer)).thenReturn(CompletableFuture.completedFuture(member));
|
||||||
UserNote firstNote = UserNote.builder().userNoteId(new ServerSpecificId(3L, 4L)).user(userInAServer).build();
|
UserNote firstNote = UserNote.builder().userNoteId(new ServerSpecificId(3L, 4L)).user(userInAServer).build();
|
||||||
UserNote secondNote = UserNote.builder().userNoteId(new ServerSpecificId(3L, 5L)).user(userInAServer).build();
|
UserNote secondNote = UserNote.builder().userNoteId(new ServerSpecificId(3L, 5L)).user(userInAServer).build();
|
||||||
testUnit.fromNotes(Arrays.asList(firstNote, secondNote));
|
testUnit.fromNotes(Arrays.asList(firstNote, secondNote));
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.moderation.converter;
|
|||||||
import dev.sheldan.abstracto.core.models.FutureMemberPair;
|
import dev.sheldan.abstracto.core.models.FutureMemberPair;
|
||||||
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
import dev.sheldan.abstracto.moderation.models.template.commands.WarnEntry;
|
import dev.sheldan.abstracto.moderation.models.template.commands.WarnEntry;
|
||||||
@@ -34,7 +34,7 @@ public class WarnEntryConverterTest {
|
|||||||
private WarnEntryConverter testUnit;
|
private WarnEntryConverter testUnit;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private WarnEntryConverter self;
|
private WarnEntryConverter self;
|
||||||
@@ -61,8 +61,8 @@ public class WarnEntryConverterTest {
|
|||||||
AUserInAServer warningUser = Mockito.mock(AUserInAServer.class);
|
AUserInAServer warningUser = Mockito.mock(AUserInAServer.class);
|
||||||
Member warnedMember = Mockito.mock(Member.class);
|
Member warnedMember = Mockito.mock(Member.class);
|
||||||
Member warningMember = Mockito.mock(Member.class);
|
Member warningMember = Mockito.mock(Member.class);
|
||||||
when(botService.getMemberInServerAsync(warnedUser)).thenReturn(CompletableFuture.completedFuture(warnedMember));
|
when(memberService.getMemberInServerAsync(warnedUser)).thenReturn(CompletableFuture.completedFuture(warnedMember));
|
||||||
when(botService.getMemberInServerAsync(warningUser)).thenReturn(CompletableFuture.completedFuture(warningMember));
|
when(memberService.getMemberInServerAsync(warningUser)).thenReturn(CompletableFuture.completedFuture(warningMember));
|
||||||
Warning firstNote = Warning.builder().warnId(new ServerSpecificId(3L, 4L)).warnedUser(warnedUser).warningUser(warningUser).build();
|
Warning firstNote = Warning.builder().warnId(new ServerSpecificId(3L, 4L)).warnedUser(warnedUser).warningUser(warningUser).build();
|
||||||
Warning secondNote = Warning.builder().warnId(new ServerSpecificId(3L, 5L)).warnedUser(warnedUser).warningUser(warningUser).build();
|
Warning secondNote = Warning.builder().warnId(new ServerSpecificId(3L, 5L)).warnedUser(warnedUser).warningUser(warningUser).build();
|
||||||
testUnit.fromWarnings(Arrays.asList(firstNote, secondNote));
|
testUnit.fromWarnings(Arrays.asList(firstNote, secondNote));
|
||||||
@@ -87,8 +87,8 @@ public class WarnEntryConverterTest {
|
|||||||
map.put(secondWarnId, memberPair);
|
map.put(secondWarnId, memberPair);
|
||||||
when(warnManagementService.findById(WARN_ID_1, SERVER_ID)).thenReturn(warning1);
|
when(warnManagementService.findById(WARN_ID_1, SERVER_ID)).thenReturn(warning1);
|
||||||
when(warnManagementService.findById(WARN_ID_2, SERVER_ID)).thenReturn(warning2);
|
when(warnManagementService.findById(WARN_ID_2, SERVER_ID)).thenReturn(warning2);
|
||||||
when(userInServerManagementService.loadUser(warnedMember)).thenReturn(warnedUser);
|
when(userInServerManagementService.loadOrCreateUser(warnedMember)).thenReturn(warnedUser);
|
||||||
when(userInServerManagementService.loadUser(warningMember)).thenReturn(warningUser);
|
when(userInServerManagementService.loadOrCreateUser(warningMember)).thenReturn(warningUser);
|
||||||
List<WarnEntry> models = testUnit.loadFullWarnEntries(map);
|
List<WarnEntry> models = testUnit.loadFullWarnEntries(map);
|
||||||
Assert.assertEquals(2, models.size());
|
Assert.assertEquals(2, models.size());
|
||||||
WarnEntry firstEntry = models.get(0);
|
WarnEntry firstEntry = models.get(0);
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package dev.sheldan.abstracto.moderation.job;
|
|||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.test.MockUtils;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.WarningDecayFeature;
|
import dev.sheldan.abstracto.moderation.config.features.WarningDecayFeature;
|
||||||
import dev.sheldan.abstracto.moderation.service.WarnService;
|
import dev.sheldan.abstracto.moderation.service.WarnService;
|
||||||
import dev.sheldan.abstracto.core.test.MockUtils;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package dev.sheldan.abstracto.moderation.listener.async;
|
package dev.sheldan.abstracto.moderation.listener.async;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.execution.result.MessageReceivedListenerResult;
|
import dev.sheldan.abstracto.core.execution.result.MessageReceivedListenerResult;
|
||||||
|
import dev.sheldan.abstracto.core.metrics.service.MetricService;
|
||||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||||
|
import dev.sheldan.abstracto.core.service.MessageService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
|
||||||
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
@@ -12,7 +14,10 @@ import dev.sheldan.abstracto.moderation.models.template.listener.InviteDeletedMo
|
|||||||
import dev.sheldan.abstracto.moderation.service.InviteLinkFilterService;
|
import dev.sheldan.abstracto.moderation.service.InviteLinkFilterService;
|
||||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
import net.dv8tion.jda.api.entities.*;
|
import net.dv8tion.jda.api.entities.Guild;
|
||||||
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
|
import net.dv8tion.jda.api.entities.User;
|
||||||
import net.dv8tion.jda.api.requests.restaction.AuditableRestAction;
|
import net.dv8tion.jda.api.requests.restaction.AuditableRestAction;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -45,6 +50,9 @@ public class InviteLinkFilterListenerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private TemplateService templateService;
|
private TemplateService templateService;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private MessageService messageService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private Message message;
|
private Message message;
|
||||||
|
|
||||||
@@ -57,6 +65,9 @@ public class InviteLinkFilterListenerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private Guild guild;
|
private Guild guild;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private MetricService metricService;
|
||||||
|
|
||||||
private static final Long SERVER_ID = 1L;
|
private static final Long SERVER_ID = 1L;
|
||||||
private static final Long CHANNEL_ID = 2L;
|
private static final Long CHANNEL_ID = 2L;
|
||||||
private static final Long USER_ID = 3L;
|
private static final Long USER_ID = 3L;
|
||||||
@@ -85,20 +96,21 @@ public class InviteLinkFilterListenerTest {
|
|||||||
public void testExecutionWithOneNotAllowedInviteNoTrackNoNotification() {
|
public void testExecutionWithOneNotAllowedInviteNoTrackNoNotification() {
|
||||||
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
||||||
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
||||||
when(message.delete()).thenReturn(auditableRestAction);
|
when(messageService.deleteMessage(message)).thenReturn(auditableRestAction);
|
||||||
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(false);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(false);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(false);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(false);
|
||||||
setupBasicMessage();
|
setupBasicMessage();
|
||||||
MessageReceivedListenerResult result = testUnit.execute(message);
|
MessageReceivedListenerResult result = testUnit.execute(message);
|
||||||
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
||||||
|
verify(metricService, times(1)).incrementCounter(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testExecutionWithOneNotAllowedInviteTrackNoNotification() {
|
public void testExecutionWithOneNotAllowedInviteTrackNoNotification() {
|
||||||
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
||||||
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
||||||
when(message.delete()).thenReturn(auditableRestAction);
|
when(messageService.deleteMessage(message)).thenReturn(auditableRestAction);
|
||||||
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(true);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(true);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(false);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(false);
|
||||||
@@ -106,13 +118,14 @@ public class InviteLinkFilterListenerTest {
|
|||||||
MessageReceivedListenerResult result = testUnit.execute(message);
|
MessageReceivedListenerResult result = testUnit.execute(message);
|
||||||
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
||||||
verifyTracking();
|
verifyTracking();
|
||||||
|
verify(metricService, times(1)).incrementCounter(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testExecutionWithOneNotAllowedInviteTrackNotification() {
|
public void testExecutionWithOneNotAllowedInviteTrackNotification() {
|
||||||
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
||||||
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
||||||
when(message.delete()).thenReturn(auditableRestAction);
|
when(messageService.deleteMessage(message)).thenReturn(auditableRestAction);
|
||||||
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(true);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(true);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(true);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(true);
|
||||||
@@ -121,19 +134,21 @@ public class InviteLinkFilterListenerTest {
|
|||||||
MessageReceivedListenerResult result = testUnit.execute(message);
|
MessageReceivedListenerResult result = testUnit.execute(message);
|
||||||
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
||||||
verifyTracking();
|
verifyTracking();
|
||||||
|
verify(metricService, times(1)).incrementCounter(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testExecutionWithOneNotAllowedInviteNoTrackNotification() {
|
public void testExecutionWithOneNotAllowedInviteNoTrackNotification() {
|
||||||
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
||||||
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
||||||
when(message.delete()).thenReturn(auditableRestAction);
|
when(messageService.deleteMessage(message)).thenReturn(auditableRestAction);
|
||||||
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(false);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(false);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(true);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(true);
|
||||||
setupForNotification();
|
setupForNotification();
|
||||||
setupBasicMessage();
|
setupBasicMessage();
|
||||||
MessageReceivedListenerResult result = testUnit.execute(message);
|
MessageReceivedListenerResult result = testUnit.execute(message);
|
||||||
|
verify(metricService, times(1)).incrementCounter(any());
|
||||||
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
||||||
verify(inviteLinkFilterService, times(0)).storeFilteredInviteLinkUsage(eq(INVITE_CODE), any(ServerUser.class));
|
verify(inviteLinkFilterService, times(0)).storeFilteredInviteLinkUsage(eq(INVITE_CODE), any(ServerUser.class));
|
||||||
}
|
}
|
||||||
@@ -142,13 +157,14 @@ public class InviteLinkFilterListenerTest {
|
|||||||
public void testExecutionWithOneNotAllowedInviteNoTrackNotificationNoPostTarget() {
|
public void testExecutionWithOneNotAllowedInviteNoTrackNotificationNoPostTarget() {
|
||||||
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
when(message.getContentRaw()).thenReturn(INVITE_LINK);
|
||||||
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
AuditableRestAction auditableRestAction = Mockito.mock(AuditableRestAction.class);
|
||||||
when(message.delete()).thenReturn(auditableRestAction);
|
when(messageService.deleteMessage(message)).thenReturn(auditableRestAction);
|
||||||
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
when(inviteLinkFilterService.isCodeFiltered(eq(INVITE_CODE), any(ServerUser.class))).thenReturn(true);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(false);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.TRACK_USES)).thenReturn(false);
|
||||||
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(true);
|
when(featureModeService.featureModeActive(ModerationFeatures.INVITE_FILTER, SERVER_ID, InviteFilterMode.FILTER_NOTIFICATIONS)).thenReturn(true);
|
||||||
when(postTargetService.postTargetDefinedInServer(InviteFilterPostTarget.INVITE_DELETE_LOG, SERVER_ID)).thenReturn(false);
|
when(postTargetService.postTargetDefinedInServer(InviteFilterPostTarget.INVITE_DELETE_LOG, SERVER_ID)).thenReturn(false);
|
||||||
setupBasicMessage();
|
setupBasicMessage();
|
||||||
MessageReceivedListenerResult result = testUnit.execute(message);
|
MessageReceivedListenerResult result = testUnit.execute(message);
|
||||||
|
verify(metricService, times(1)).incrementCounter(any());
|
||||||
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
Assert.assertEquals(MessageReceivedListenerResult.DELETED, result);
|
||||||
verify(inviteLinkFilterService, times(0)).storeFilteredInviteLinkUsage(eq(INVITE_CODE), any(ServerUser.class));
|
verify(inviteLinkFilterService, times(0)).storeFilteredInviteLinkUsage(eq(INVITE_CODE), any(ServerUser.class));
|
||||||
verify(templateService, times(0)).renderEmbedTemplate(eq(INVITE_LINK_DELETED_NOTIFICATION_EMBED_TEMPLATE_KEY), any(InviteDeletedModel.class));
|
verify(templateService, times(0)).renderEmbedTemplate(eq(INVITE_LINK_DELETED_NOTIFICATION_EMBED_TEMPLATE_KEY), any(InviteDeletedModel.class));
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.moderation.listener.async;
|
package dev.sheldan.abstracto.moderation.listener.async;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
@@ -29,7 +29,7 @@ public class JoinLoggerTest {
|
|||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private JoinLogger self;
|
private JoinLogger self;
|
||||||
@@ -48,7 +48,7 @@ public class JoinLoggerTest {
|
|||||||
public void testExecute() {
|
public void testExecute() {
|
||||||
when(serverUser.getUserId()).thenReturn(USER_ID);
|
when(serverUser.getUserId()).thenReturn(USER_ID);
|
||||||
when(serverUser.getServerId()).thenReturn(SERVER_ID);
|
when(serverUser.getServerId()).thenReturn(SERVER_ID);
|
||||||
when(botService.getMemberInServerAsync(SERVER_ID, USER_ID)).thenReturn(CompletableFuture.completedFuture(member));
|
when(memberService.getMemberInServerAsync(SERVER_ID, USER_ID)).thenReturn(CompletableFuture.completedFuture(member));
|
||||||
testUnit.execute(serverUser);
|
testUnit.execute(serverUser);
|
||||||
verify(self, times(1)).sendJoinLog(serverUser, member);
|
verify(self, times(1)).sendJoinLog(serverUser, member);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class JoinMuteListenerTest {
|
|||||||
public void testNonMutedUserJoins() {
|
public void testNonMutedUserJoins() {
|
||||||
when(serverUser.getServerId()).thenReturn(SERVER_ID);
|
when(serverUser.getServerId()).thenReturn(SERVER_ID);
|
||||||
when(serverUser.getUserId()).thenReturn(USER_ID);
|
when(serverUser.getUserId()).thenReturn(USER_ID);
|
||||||
when(userInServerManagementService.loadUser(SERVER_ID, USER_ID)).thenReturn(joiningUser);
|
when(userInServerManagementService.loadOrCreateUser(SERVER_ID, USER_ID)).thenReturn(joiningUser);
|
||||||
when(muteManagementService.hasActiveMute(joiningUser)).thenReturn(false);
|
when(muteManagementService.hasActiveMute(joiningUser)).thenReturn(false);
|
||||||
testUnit.execute(serverUser);
|
testUnit.execute(serverUser);
|
||||||
verify(muteService, times(0)).applyMuteRole(joiningUser);
|
verify(muteService, times(0)).applyMuteRole(joiningUser);
|
||||||
@@ -59,7 +59,7 @@ public class JoinMuteListenerTest {
|
|||||||
public void testMutedUserJoins() {
|
public void testMutedUserJoins() {
|
||||||
when(serverUser.getServerId()).thenReturn(SERVER_ID);
|
when(serverUser.getServerId()).thenReturn(SERVER_ID);
|
||||||
when(serverUser.getUserId()).thenReturn(USER_ID);
|
when(serverUser.getUserId()).thenReturn(USER_ID);
|
||||||
when(userInServerManagementService.loadUser(SERVER_ID, USER_ID)).thenReturn(joiningUser);
|
when(userInServerManagementService.loadOrCreateUser(SERVER_ID, USER_ID)).thenReturn(joiningUser);
|
||||||
when(muteManagementService.hasActiveMute(joiningUser)).thenReturn(true);
|
when(muteManagementService.hasActiveMute(joiningUser)).thenReturn(true);
|
||||||
testUnit.execute(serverUser);
|
testUnit.execute(serverUser);
|
||||||
verify(muteService, times(1)).applyMuteRole(joiningUser);
|
verify(muteService, times(1)).applyMuteRole(joiningUser);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.moderation.listener.async;
|
package dev.sheldan.abstracto.moderation.listener.async;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
import dev.sheldan.abstracto.moderation.config.posttargets.LoggingPostTarget;
|
||||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
@@ -31,7 +31,7 @@ public class LeaveLoggerTest {
|
|||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private BotService botService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private LeaveLogger self;
|
private LeaveLogger self;
|
||||||
@@ -49,7 +49,7 @@ public class LeaveLoggerTest {
|
|||||||
public void testExecute() {
|
public void testExecute() {
|
||||||
when(leavingUser.getUserId()).thenReturn(USER_ID);
|
when(leavingUser.getUserId()).thenReturn(USER_ID);
|
||||||
when(leavingUser.getServerId()).thenReturn(SERVER_ID);
|
when(leavingUser.getServerId()).thenReturn(SERVER_ID);
|
||||||
when(botService.getMemberInServerAsync(SERVER_ID, USER_ID)).thenReturn(CompletableFuture.completedFuture(member));
|
when(memberService.getMemberInServerAsync(SERVER_ID, USER_ID)).thenReturn(CompletableFuture.completedFuture(member));
|
||||||
testUnit.execute(leavingUser);
|
testUnit.execute(leavingUser);
|
||||||
verify(self, times(1)).executeJoinLogging(leavingUser, member);
|
verify(self, times(1)).executeJoinLogging(leavingUser, member);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ package dev.sheldan.abstracto.moderation.listener.async;
|
|||||||
import dev.sheldan.abstracto.core.models.cache.CachedAttachment;
|
import dev.sheldan.abstracto.core.models.cache.CachedAttachment;
|
||||||
import dev.sheldan.abstracto.core.models.cache.CachedAuthor;
|
import dev.sheldan.abstracto.core.models.cache.CachedAuthor;
|
||||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||||
import dev.sheldan.abstracto.core.service.BotService;
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
|
import dev.sheldan.abstracto.core.service.MemberService;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||||
@@ -40,7 +41,10 @@ public class MessageDeleteLogListenerTest {
|
|||||||
private PostTargetService postTargetService;
|
private PostTargetService postTargetService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private BotService botService;
|
private ChannelService channelService;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private MemberService memberService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private ChannelManagementService channelManagementService;
|
private ChannelManagementService channelManagementService;
|
||||||
@@ -87,7 +91,7 @@ public class MessageDeleteLogListenerTest {
|
|||||||
when(deletedMessage.getAuthor()).thenReturn(cachedAuthor);
|
when(deletedMessage.getAuthor()).thenReturn(cachedAuthor);
|
||||||
when(cachedAuthor.getAuthorId()).thenReturn(AUTHOR_ID);
|
when(cachedAuthor.getAuthorId()).thenReturn(AUTHOR_ID);
|
||||||
when(deletedMessage.getServerId()).thenReturn(SERVER_ID);
|
when(deletedMessage.getServerId()).thenReturn(SERVER_ID);
|
||||||
when(botService.getMemberInServerAsync(SERVER_ID, AUTHOR_ID)).thenReturn(CompletableFuture.completedFuture(member));
|
when(memberService.getMemberInServerAsync(SERVER_ID, AUTHOR_ID)).thenReturn(CompletableFuture.completedFuture(member));
|
||||||
testUnit.execute(deletedMessage);
|
testUnit.execute(deletedMessage);
|
||||||
verify(self, times(1)).executeListener(deletedMessage, member);
|
verify(self, times(1)).executeListener(deletedMessage, member);
|
||||||
}
|
}
|
||||||
@@ -99,7 +103,7 @@ public class MessageDeleteLogListenerTest {
|
|||||||
MessageToSend messageToSend = Mockito.mock(MessageToSend.class);
|
MessageToSend messageToSend = Mockito.mock(MessageToSend.class);
|
||||||
when(member.getGuild()).thenReturn(guild);
|
when(member.getGuild()).thenReturn(guild);
|
||||||
when(templateService.renderEmbedTemplate(eq(MessageDeleteLogListener.MESSAGE_DELETED_TEMPLATE), captor.capture())).thenReturn(messageToSend);
|
when(templateService.renderEmbedTemplate(eq(MessageDeleteLogListener.MESSAGE_DELETED_TEMPLATE), captor.capture())).thenReturn(messageToSend);
|
||||||
when(botService.getTextChannelFromServer(SERVER_ID, CHANNEL_ID)).thenReturn(textChannel);
|
when(channelService.getTextChannelFromServer(SERVER_ID, CHANNEL_ID)).thenReturn(textChannel);
|
||||||
testUnit.executeListener(deletedMessage, member);
|
testUnit.executeListener(deletedMessage, member);
|
||||||
verify(postTargetService, times(1)).sendEmbedInPostTarget(messageToSend, LoggingPostTarget.DELETE_LOG, SERVER_ID);
|
verify(postTargetService, times(1)).sendEmbedInPostTarget(messageToSend, LoggingPostTarget.DELETE_LOG, SERVER_ID);
|
||||||
MessageDeletedLog messageDeletedLog = captor.getValue();
|
MessageDeletedLog messageDeletedLog = captor.getValue();
|
||||||
@@ -114,7 +118,7 @@ public class MessageDeleteLogListenerTest {
|
|||||||
String attachmentUrl = "url";
|
String attachmentUrl = "url";
|
||||||
when(deletedMessage.getServerId()).thenReturn(SERVER_ID);
|
when(deletedMessage.getServerId()).thenReturn(SERVER_ID);
|
||||||
when(deletedMessage.getChannelId()).thenReturn(CHANNEL_ID);
|
when(deletedMessage.getChannelId()).thenReturn(CHANNEL_ID);
|
||||||
when(botService.getTextChannelFromServer(SERVER_ID, CHANNEL_ID)).thenReturn(textChannel);
|
when(channelService.getTextChannelFromServer(SERVER_ID, CHANNEL_ID)).thenReturn(textChannel);
|
||||||
CachedAttachment cachedAttachment = Mockito.mock(CachedAttachment.class);
|
CachedAttachment cachedAttachment = Mockito.mock(CachedAttachment.class);
|
||||||
when(cachedAttachment.getProxyUrl()).thenReturn(attachmentUrl);
|
when(cachedAttachment.getProxyUrl()).thenReturn(attachmentUrl);
|
||||||
List<CachedAttachment> attachmentList = Arrays.asList(cachedAttachment);
|
List<CachedAttachment> attachmentList = Arrays.asList(cachedAttachment);
|
||||||
@@ -138,7 +142,7 @@ public class MessageDeleteLogListenerTest {
|
|||||||
public void testExecuteListenerWithTwoAttachment() {
|
public void testExecuteListenerWithTwoAttachment() {
|
||||||
when(deletedMessage.getServerId()).thenReturn(SERVER_ID);
|
when(deletedMessage.getServerId()).thenReturn(SERVER_ID);
|
||||||
when(deletedMessage.getChannelId()).thenReturn(CHANNEL_ID);
|
when(deletedMessage.getChannelId()).thenReturn(CHANNEL_ID);
|
||||||
when(botService.getTextChannelFromServer(SERVER_ID, CHANNEL_ID)).thenReturn(textChannel);
|
when(channelService.getTextChannelFromServer(SERVER_ID, CHANNEL_ID)).thenReturn(textChannel);
|
||||||
String attachmentUrl = "url";
|
String attachmentUrl = "url";
|
||||||
String secondAttachmentUrl = "url2";
|
String secondAttachmentUrl = "url2";
|
||||||
CachedAttachment cachedAttachment = Mockito.mock(CachedAttachment.class);
|
CachedAttachment cachedAttachment = Mockito.mock(CachedAttachment.class);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user