mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-06-07 11:22:56 +00:00
[AB-137] fixing occurrences for templates in cases entities do not exist anymore
fixing feature mode retrieval to adapt to lowercase fixing disable exp role creation and retrieval removing ansible code
This commit is contained in:
@@ -19,6 +19,7 @@ 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.Message;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -51,10 +52,14 @@ public class ListDisabledExperienceRoles extends AbstractConditionableCommand {
|
||||
List<ADisabledExpRole> disabledRolesForServer = disabledExpRoleManagementService.getDisabledRolesForServer(server);
|
||||
DisabledExperienceRolesModel disabledExperienceRolesModel = (DisabledExperienceRolesModel) ContextConverter.fromCommandContext(commandContext, DisabledExperienceRolesModel.class);
|
||||
disabledRolesForServer.forEach(aDisabledExpRole -> {
|
||||
Role jdaRole = null;
|
||||
if(!aDisabledExpRole.getRole().getDeleted()) {
|
||||
jdaRole = roleService.getRoleFromGuild(aDisabledExpRole.getRole());
|
||||
}
|
||||
FullRole role = FullRole
|
||||
.builder()
|
||||
.role(aDisabledExpRole.getRole())
|
||||
.serverRole(roleService.getRoleFromGuild(aDisabledExpRole.getRole()))
|
||||
.serverRole(jdaRole)
|
||||
.build();
|
||||
disabledExperienceRolesModel.getRoles().add(role);
|
||||
});
|
||||
|
||||
@@ -4,11 +4,14 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.service.MemberService;
|
||||
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
||||
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||
import dev.sheldan.abstracto.experience.models.templates.LeaderBoardEntryModel;
|
||||
import dev.sheldan.abstracto.experience.service.management.UserExperienceManagementService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -24,6 +27,12 @@ public class LeaderBoardModelConverter {
|
||||
@Autowired
|
||||
private MemberService memberService;
|
||||
|
||||
@Autowired
|
||||
private UserExperienceManagementService userExperienceManagementService;
|
||||
|
||||
@Autowired
|
||||
private LeaderBoardModelConverter self;
|
||||
|
||||
/**
|
||||
* Converts the complete {@link LeaderBoard leaderBoard} into a list of {@link LeaderBoardEntryModel leaderbaordEntryModels} which contain additional
|
||||
* information available for rendering the leader board ({@link Member member} reference and more)
|
||||
@@ -50,13 +59,21 @@ public class LeaderBoardModelConverter {
|
||||
*/
|
||||
public CompletableFuture<LeaderBoardEntryModel> fromLeaderBoardEntry(LeaderBoardEntry leaderBoardEntry) {
|
||||
AUserInAServer entryUser = leaderBoardEntry.getExperience().getUser();
|
||||
return memberService.getMemberInServerAsync(entryUser.getServerReference().getId(), entryUser.getUserReference().getId()).thenApply(member ->
|
||||
LeaderBoardEntryModel
|
||||
.builder()
|
||||
.experience(leaderBoardEntry.getExperience())
|
||||
.member(member).rank(leaderBoardEntry.getRank())
|
||||
.rank(leaderBoardEntry.getRank())
|
||||
.build()
|
||||
);
|
||||
Long userInServerId = leaderBoardEntry.getExperience().getUser().getUserInServerId();
|
||||
Integer rank = leaderBoardEntry.getRank();
|
||||
return memberService.getMemberInServerAsync(entryUser.getServerReference().getId(), entryUser.getUserReference().getId())
|
||||
.thenApply(member -> self.buildLeaderBoardModel(userInServerId, member, rank))
|
||||
.exceptionally(throwable -> self.buildLeaderBoardModel(userInServerId, null, rank));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public LeaderBoardEntryModel buildLeaderBoardModel(Long userInServerId, Member member, Integer rank) {
|
||||
AUserExperience experience = userExperienceManagementService.findByUserInServerId(userInServerId);
|
||||
return LeaderBoardEntryModel
|
||||
.builder()
|
||||
.experience(experience)
|
||||
.member(member)
|
||||
.rank(rank)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ public class DisabledExpRoleManagementServiceBean implements DisabledExpRoleMana
|
||||
public ADisabledExpRole setRoleToBeDisabledForExp(ARole role) {
|
||||
ADisabledExpRole newRole = ADisabledExpRole
|
||||
.builder()
|
||||
.id(role.getId())
|
||||
.role(role)
|
||||
.build();
|
||||
log.info("Adding disabled exp role {} for server {}.", role.getId(), role.getServer().getId());
|
||||
@@ -39,7 +40,7 @@ public class DisabledExpRoleManagementServiceBean implements DisabledExpRoleMana
|
||||
|
||||
@Override
|
||||
public boolean isExperienceDisabledForRole(ARole role) {
|
||||
return disabledExpRoleRepository.existsByRole(role);
|
||||
return disabledExpRoleRepository.existsById(role.getId());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -44,10 +44,12 @@ public class ListDisabledExperienceRolesTest {
|
||||
@Mock
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
@Mock
|
||||
private AServer server;
|
||||
|
||||
@Test
|
||||
public void testCommandExecutionNoRolesFound() {
|
||||
CommandContext context = CommandTestUtilities.getNoParameters();
|
||||
AServer server = Mockito.mock(AServer.class);
|
||||
when(serverManagementService.loadServer(context.getGuild())).thenReturn(server);
|
||||
when(disabledExpRoleManagementService.getDisabledRolesForServer(server)).thenReturn(new ArrayList<>());
|
||||
when(channelService.sendEmbedTemplateInTextChannelList(eq("list_disabled_experience_roles"),
|
||||
@@ -60,14 +62,20 @@ public class ListDisabledExperienceRolesTest {
|
||||
@Test
|
||||
public void testCommandExecutionRolesFound() {
|
||||
CommandContext context = CommandTestUtilities.getNoParameters();
|
||||
AServer server = Mockito.mock(AServer.class);
|
||||
ADisabledExpRole disabledExpRole1 = Mockito.mock(ADisabledExpRole.class);
|
||||
ADisabledExpRole disabledExpRole2 = Mockito.mock(ADisabledExpRole.class);
|
||||
when(disabledExpRoleManagementService.getDisabledRolesForServer(server)).thenReturn(Arrays.asList(disabledExpRole1, disabledExpRole2));
|
||||
Role role1 = Mockito.mock(Role.class);
|
||||
Role role2 = Mockito.mock(Role.class);
|
||||
when(roleService.getRoleFromGuild(disabledExpRole1.getRole())).thenReturn(role1);
|
||||
when(roleService.getRoleFromGuild(disabledExpRole2.getRole())).thenReturn(role2);
|
||||
|
||||
ARole aRole = Mockito.mock(ARole.class);
|
||||
ARole aRole2 = Mockito.mock(ARole.class);
|
||||
when(roleService.getRoleFromGuild(aRole)).thenReturn(role1);
|
||||
when(roleService.getRoleFromGuild(aRole2)).thenReturn(role2);
|
||||
when(aRole.getDeleted()).thenReturn(false);
|
||||
when(aRole2.getDeleted()).thenReturn(false);
|
||||
when(disabledExpRole1.getRole()).thenReturn(aRole);
|
||||
when(disabledExpRole2.getRole()).thenReturn(aRole2);
|
||||
when(serverManagementService.loadServer(context.getGuild())).thenReturn(server);
|
||||
when(channelService.sendEmbedTemplateInTextChannelList(eq("list_disabled_experience_roles"),
|
||||
any(DisabledExperienceRolesModel.class), eq(context.getChannel()))).thenReturn(CommandTestUtilities.messageFutureList());
|
||||
|
||||
@@ -9,7 +9,6 @@ import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||
import dev.sheldan.abstracto.experience.models.templates.LeaderBoardEntryModel;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -33,58 +32,60 @@ public class LeaderBoardModelConverterTest {
|
||||
@Mock
|
||||
private MemberService memberService;
|
||||
|
||||
@Mock
|
||||
private LeaderBoardModelConverter self;
|
||||
|
||||
private static final Long SERVER_ID = 4L;
|
||||
private static final Long USER_ID = 5L;
|
||||
private static final Long USER_ID_2 = 6L;
|
||||
private static final Long USER_IN_SERVER_ID = 7L;
|
||||
private static final Long USER_IN_SERVER_ID_2 = 8L;
|
||||
|
||||
@Test
|
||||
public void testFromLeaderBoard() {
|
||||
Integer firstRank = 1;
|
||||
Long firstExperience = 1L;
|
||||
|
||||
LeaderBoardEntry entry = getEntry(firstExperience, firstRank, USER_ID);
|
||||
LeaderBoardEntry entry = getEntry(firstRank, USER_ID, USER_IN_SERVER_ID);
|
||||
Integer secondRank = 2;
|
||||
Long secondExperience = 2L;
|
||||
LeaderBoardEntry entry2 = getEntry(secondExperience, secondRank, USER_ID_2);
|
||||
LeaderBoardEntryModel firstEntryModel = Mockito.mock(LeaderBoardEntryModel.class);
|
||||
LeaderBoardEntryModel secondEntryModel = Mockito.mock(LeaderBoardEntryModel.class);
|
||||
LeaderBoardEntry entry2 = getEntry(secondRank, USER_ID_2, USER_IN_SERVER_ID_2);
|
||||
List<LeaderBoardEntry> entries = Arrays.asList(entry, entry2);
|
||||
LeaderBoard leaderBoard = Mockito.mock(LeaderBoard.class);
|
||||
when(leaderBoard.getEntries()).thenReturn(entries);
|
||||
Member member = Mockito.mock(Member.class);
|
||||
when(memberService.getMemberInServerAsync(SERVER_ID, USER_ID)).thenReturn(CompletableFuture.completedFuture(member));
|
||||
when(memberService.getMemberInServerAsync(SERVER_ID, USER_ID_2)).thenReturn(CompletableFuture.completedFuture(member));
|
||||
when(self.buildLeaderBoardModel(USER_IN_SERVER_ID, member, firstRank)).thenReturn(firstEntryModel);
|
||||
when(self.buildLeaderBoardModel(USER_IN_SERVER_ID_2, member, secondRank)).thenReturn(secondEntryModel);
|
||||
List<CompletableFuture<LeaderBoardEntryModel>> leaderBoardEntryModels = testUnit.fromLeaderBoard(leaderBoard);
|
||||
LeaderBoardEntryModel firstEntry = leaderBoardEntryModels.get(0).join();
|
||||
Assert.assertEquals(firstRank, firstEntry.getRank());
|
||||
Assert.assertEquals(firstExperience, firstEntry.getExperience().getExperience());
|
||||
Assert.assertEquals(firstEntryModel, firstEntry);
|
||||
LeaderBoardEntryModel secondEntry = leaderBoardEntryModels.get(1).join();
|
||||
Assert.assertEquals(secondRank, secondEntry.getRank());
|
||||
Assert.assertEquals(secondExperience, secondEntry.getExperience().getExperience());
|
||||
Assert.assertEquals(secondEntryModel, secondEntry);
|
||||
Assert.assertEquals(entries.size(), leaderBoardEntryModels.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFromEntry() {
|
||||
Integer rank = 2;
|
||||
LeaderBoardEntry entry = getEntry(1L, rank, USER_ID);
|
||||
LeaderBoardEntry entry = getEntry(rank, USER_ID, USER_IN_SERVER_ID);
|
||||
Member member = Mockito.mock(Member.class);
|
||||
User user = Mockito.mock(User.class);
|
||||
when(user.getIdLong()).thenReturn(USER_ID);
|
||||
when(member.getUser()).thenReturn(user);
|
||||
LeaderBoardEntryModel entryModelMock = Mockito.mock(LeaderBoardEntryModel.class);
|
||||
when(memberService.getMemberInServerAsync(SERVER_ID, USER_ID)).thenReturn(CompletableFuture.completedFuture(member));
|
||||
when(self.buildLeaderBoardModel(USER_IN_SERVER_ID, member, rank)).thenReturn(entryModelMock);
|
||||
CompletableFuture<LeaderBoardEntryModel> leaderBoardEntryModel = testUnit.fromLeaderBoardEntry(entry);
|
||||
LeaderBoardEntryModel entryModel = leaderBoardEntryModel.join();
|
||||
Assert.assertEquals(rank, entryModel.getRank());
|
||||
Assert.assertEquals(USER_ID, entryModel.getExperience().getUser().getUserReference().getId());
|
||||
Assert.assertEquals(USER_ID.longValue(), entryModel.getMember().getUser().getIdLong());
|
||||
Assert.assertEquals(entryModelMock, entryModel);
|
||||
}
|
||||
|
||||
private LeaderBoardEntry getEntry(Long experienceCount, Integer rank, Long userId) {
|
||||
private LeaderBoardEntry getEntry(Integer rank, Long userId, Long userInServerId) {
|
||||
AUserExperience experience = Mockito.mock(AUserExperience.class);
|
||||
when(experience.getExperience()).thenReturn(experienceCount);
|
||||
AUserInAServer userInAServer = Mockito.mock(AUserInAServer.class);
|
||||
when(experience.getUser()).thenReturn(userInAServer);
|
||||
AUser user = Mockito.mock(AUser.class);
|
||||
when(userInAServer.getUserReference()).thenReturn(user);
|
||||
when(userInAServer.getUserInServerId()).thenReturn(userInServerId);
|
||||
when(user.getId()).thenReturn(userId);
|
||||
AServer server = Mockito.mock(AServer.class);
|
||||
when(server.getId()).thenReturn(SERVER_ID);
|
||||
|
||||
@@ -39,10 +39,12 @@ public class DisabledExpRoleManagementServiceBeanTest {
|
||||
@Test
|
||||
public void testIfRoleIsDisabled() {
|
||||
ARole aRole = Mockito.mock(ARole.class);
|
||||
when(disabledExpRoleRepository.existsByRole(aRole)).thenReturn(true);
|
||||
Long roleId = 1L;
|
||||
when(aRole.getId()).thenReturn(roleId);
|
||||
when(disabledExpRoleRepository.existsById(roleId)).thenReturn(true);
|
||||
boolean experienceDisabledForRole = testUnit.isExperienceDisabledForRole(aRole);
|
||||
Assert.assertTrue(experienceDisabledForRole);
|
||||
verify(disabledExpRoleRepository, times(1)).existsByRole(aRole);
|
||||
verify(disabledExpRoleRepository, times(1)).existsById(roleId);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -55,7 +55,8 @@ public class UserNotesConverter {
|
||||
public List<NoteEntryModel> loadFullNotes(Map<ServerSpecificId, CompletableFuture<Member>> futureHashMap) {
|
||||
List<NoteEntryModel> entryModels = new ArrayList<>();
|
||||
futureHashMap.keySet().forEach(serverSpecificId -> {
|
||||
Member member = futureHashMap.get(serverSpecificId).join();
|
||||
CompletableFuture<Member> memberFuture = futureHashMap.get(serverSpecificId);
|
||||
Member member = !memberFuture.isCompletedExceptionally() ? memberFuture.join() : null;
|
||||
UserNote note = userNoteManagementService.loadNote(serverSpecificId.getServerId(), serverSpecificId.getId());
|
||||
FullUserInServer fullUser = FullUserInServer
|
||||
.builder()
|
||||
|
||||
@@ -57,25 +57,26 @@ public class WarnEntryConverter {
|
||||
public List<WarnEntry> loadFullWarnEntries(Map<ServerSpecificId, FutureMemberPair> loadedWarnInfo) {
|
||||
List<WarnEntry> entries = new ArrayList<>();
|
||||
loadedWarnInfo.keySet().forEach(warning -> {
|
||||
Warning warn = warnManagementService.findById(warning.getId(), warning.getServerId());
|
||||
FutureMemberPair memberPair = loadedWarnInfo.get(warning);
|
||||
Member warnedMember = memberPair.getSecondMember().join();
|
||||
Member warnedMember = !memberPair.getSecondMember().isCompletedExceptionally() ? memberPair.getSecondMember().join() : null;
|
||||
FullUserInServer warnedUser = FullUserInServer
|
||||
.builder()
|
||||
.member(warnedMember)
|
||||
.aUserInAServer(userInServerManagementService.loadOrCreateUser(warnedMember))
|
||||
.aUserInAServer(warn.getWarnedUser())
|
||||
.build();
|
||||
|
||||
Member warningMember = memberPair.getFirstMember().join();
|
||||
Member warningMember = !memberPair.getFirstMember().isCompletedExceptionally() ? memberPair.getFirstMember().join() : null;
|
||||
FullUserInServer warningUser = FullUserInServer
|
||||
.builder()
|
||||
.member(warningMember)
|
||||
.aUserInAServer(userInServerManagementService.loadOrCreateUser(warningMember))
|
||||
.aUserInAServer(warn.getWarningUser())
|
||||
.build();
|
||||
WarnEntry entry = WarnEntry
|
||||
.builder()
|
||||
.warnedUser(warnedUser)
|
||||
.warningUser(warningUser)
|
||||
.warning(warnManagementService.findById(warning.getId(), warning.getServerId()))
|
||||
.warning(warn)
|
||||
.build();
|
||||
entries.add(entry);
|
||||
});
|
||||
|
||||
@@ -339,11 +339,13 @@ public class MuteServiceBean implements MuteService {
|
||||
public CompletableFuture<Void> sendUnmuteLog(Long muteId, Guild guild, CompletableFuture<Member> mutingMemberFuture, CompletableFuture<Member> mutedMemberFuture) {
|
||||
Mute mute = muteManagementService.findMute(muteId, guild.getIdLong());
|
||||
AServer mutingServer = serverManagementService.loadServer(guild.getIdLong());
|
||||
Member mutingMember = !mutingMemberFuture.isCompletedExceptionally() ? mutingMemberFuture.join() : null;
|
||||
Member mutedMember = !mutedMemberFuture.isCompletedExceptionally() ? mutedMemberFuture.join() : null;
|
||||
UnMuteLog unMuteLog = UnMuteLog
|
||||
.builder()
|
||||
.mute(mute)
|
||||
.mutingUser(mutingMemberFuture.join())
|
||||
.unMutedUser(mutedMemberFuture.join())
|
||||
.mutingUser(mutingMember)
|
||||
.unMutedUser(mutedMember)
|
||||
.guild(guild)
|
||||
.build();
|
||||
CompletableFuture<Void> notificationFuture = sendUnMuteLogMessage(unMuteLog, mutingServer);
|
||||
|
||||
@@ -2,6 +2,7 @@ package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.FutureMemberPair;
|
||||
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.service.*;
|
||||
@@ -187,14 +188,25 @@ public class WarnServiceBean implements WarnService {
|
||||
warningsToDecay.forEach(warning -> {
|
||||
CompletableFuture<Member> warningMember = memberService.getMemberInServerAsync(warning.getWarningUser());
|
||||
CompletableFuture<Member> warnedMember = memberService.getMemberInServerAsync(warning.getWarnedUser());
|
||||
FutureMemberPair futurePair = FutureMemberPair.builder().firstMember(warningMember).secondMember(warnedMember).build();
|
||||
FutureMemberPair futurePair = FutureMemberPair
|
||||
.builder()
|
||||
.firstMember(warningMember)
|
||||
.secondMember(warnedMember)
|
||||
.firstUser(ServerUser.fromAUserInAServer(warning.getWarningUser()))
|
||||
.secondUser(ServerUser.fromAUserInAServer(warning.getWarnedUser()))
|
||||
.build();
|
||||
warningMembers.put(warning.getWarnId(), futurePair);
|
||||
allFutures.add(warningMember);
|
||||
allFutures.add(warnedMember);
|
||||
});
|
||||
CompletableFuture<Void> sendingFuture = new CompletableFuture<>();
|
||||
FutureUtils.toSingleFutureGeneric(allFutures).handle((aVoid, throwable) -> {
|
||||
self.renderAndSendWarnDecayLogs(serverId, warningMembers).thenAccept(aVoid1 ->
|
||||
sendingFuture.complete(null)
|
||||
);
|
||||
).exceptionally(throwable1 -> {
|
||||
sendingFuture.completeExceptionally(throwable1);
|
||||
return null;
|
||||
});
|
||||
return null;
|
||||
});
|
||||
|
||||
@@ -207,16 +219,23 @@ public class WarnServiceBean implements WarnService {
|
||||
AServer server = serverManagementService.loadServer(serverId);
|
||||
List<WarnDecayWarning> warnDecayWarnings = new ArrayList<>();
|
||||
warningMembers.keySet().forEach(serverSpecificId -> {
|
||||
Warning warning = warnManagementService.findById(serverSpecificId.getId(), serverSpecificId.getServerId());
|
||||
FutureMemberPair pair = warningMembers.get(serverSpecificId);
|
||||
// TODO add ids to render in case any member left the server
|
||||
WarnDecayWarning warnDecayWarning = WarnDecayWarning
|
||||
.builder()
|
||||
.warningMember(pair.getFirstMember().join())
|
||||
.warnedMember(pair.getSecondMember().join())
|
||||
.warning(warning)
|
||||
.build();
|
||||
warnDecayWarnings.add(warnDecayWarning);
|
||||
try {
|
||||
Warning warning = warnManagementService.findById(serverSpecificId.getId(), serverSpecificId.getServerId());
|
||||
FutureMemberPair pair = warningMembers.get(serverSpecificId);
|
||||
Member warningMember = !pair.getFirstMember().isCompletedExceptionally() ? pair.getFirstMember().join() : null;
|
||||
Member warnedMember = !pair.getSecondMember().isCompletedExceptionally() ? pair.getSecondMember().join() : null;
|
||||
WarnDecayWarning warnDecayWarning = WarnDecayWarning
|
||||
.builder()
|
||||
.warningMember(warningMember)
|
||||
.warningUser(pair.getFirstUser())
|
||||
.warnedMember(warnedMember)
|
||||
.warnedUser(pair.getSecondUser())
|
||||
.warning(warning)
|
||||
.build();
|
||||
warnDecayWarnings.add(warnDecayWarning);
|
||||
} catch (Exception ex) {
|
||||
log.error("exception.", ex);
|
||||
}
|
||||
});
|
||||
WarnDecayLogModel warnDecayLogModel = WarnDecayLogModel
|
||||
.builder()
|
||||
|
||||
@@ -85,8 +85,12 @@ public class WarnEntryConverterTest {
|
||||
Warning warning2 = Mockito.mock(Warning.class);
|
||||
ServerSpecificId firstWarnId = new ServerSpecificId(SERVER_ID, WARN_ID_1);
|
||||
when(warning1.getWarnId()).thenReturn(firstWarnId);
|
||||
when(warning1.getWarningUser()).thenReturn(warningUser);
|
||||
when(warning1.getWarnedUser()).thenReturn(warnedUser);
|
||||
ServerSpecificId secondWarnId = new ServerSpecificId(SERVER_ID, WARN_ID_2);
|
||||
when(warning2.getWarnId()).thenReturn(secondWarnId);
|
||||
when(warning2.getWarningUser()).thenReturn(warningUser);
|
||||
when(warning2.getWarnedUser()).thenReturn(warnedUser);
|
||||
HashMap<ServerSpecificId, FutureMemberPair> map = new HashMap<>();
|
||||
FutureMemberPair memberPair = Mockito.mock(FutureMemberPair.class);
|
||||
when(memberPair.getFirstMember()).thenReturn(CompletableFuture.completedFuture(warningMember));
|
||||
@@ -95,8 +99,6 @@ public class WarnEntryConverterTest {
|
||||
map.put(secondWarnId, memberPair);
|
||||
when(warnManagementService.findById(WARN_ID_1, SERVER_ID)).thenReturn(warning1);
|
||||
when(warnManagementService.findById(WARN_ID_2, SERVER_ID)).thenReturn(warning2);
|
||||
when(userInServerManagementService.loadOrCreateUser(warnedMember)).thenReturn(warnedUser);
|
||||
when(userInServerManagementService.loadOrCreateUser(warningMember)).thenReturn(warningUser);
|
||||
List<WarnEntry> models = testUnit.loadFullWarnEntries(map);
|
||||
Assert.assertEquals(2, models.size());
|
||||
WarnEntry firstEntry = models.get(0);
|
||||
|
||||
@@ -2,6 +2,7 @@ package dev.sheldan.abstracto.moderation.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.property.SystemConfigProperty;
|
||||
import dev.sheldan.abstracto.core.service.*;
|
||||
@@ -103,6 +104,15 @@ public class WarnServiceBeanTest {
|
||||
@Mock
|
||||
private AUserInAServer secondWarnedUser;
|
||||
|
||||
@Mock
|
||||
private AUser firstAUser;
|
||||
|
||||
@Mock
|
||||
private AUser secondAUser;
|
||||
|
||||
@Mock
|
||||
private AUser thirdAUser;
|
||||
|
||||
@Mock
|
||||
private Warning firstWarning;
|
||||
|
||||
@@ -225,9 +235,15 @@ public class WarnServiceBeanTest {
|
||||
private void setupWarnings() {
|
||||
when(firstWarning.getWarningUser()).thenReturn(warningUser);
|
||||
when(secondWarning.getWarningUser()).thenReturn(warningUser);
|
||||
when(warningUser.getServerReference()).thenReturn(server);
|
||||
when(warningUser.getUserReference()).thenReturn(thirdAUser);
|
||||
|
||||
when(firstWarning.getWarnedUser()).thenReturn(firstWarnedUser);
|
||||
when(firstWarnedUser.getServerReference()).thenReturn(server);
|
||||
when(firstWarnedUser.getUserReference()).thenReturn(firstAUser);
|
||||
when(secondWarning.getWarnedUser()).thenReturn(secondWarnedUser);
|
||||
when(secondWarnedUser.getServerReference()).thenReturn(server);
|
||||
when(secondWarnedUser.getUserReference()).thenReturn(secondAUser);
|
||||
when(firstWarning.getWarnId()).thenReturn(new ServerSpecificId(SERVER_ID, WARN_ID));
|
||||
when(secondWarning.getWarnId()).thenReturn(new ServerSpecificId(SERVER_ID, 9L));
|
||||
when(server.getId()).thenReturn(SERVER_ID);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.sheldan.abstracto.moderation.models.template.job;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
@@ -26,4 +27,14 @@ public class WarnDecayWarning {
|
||||
* The user which casted the warn, is null if the user left the server
|
||||
*/
|
||||
private Member warningMember;
|
||||
|
||||
/**
|
||||
* The {@link ServerUser serverUser} which was warned, can be used in case the {@link Member warningMember} is null
|
||||
*/
|
||||
private ServerUser warningUser;
|
||||
|
||||
/**
|
||||
* The {@link ServerUser serverUser} who cast the warn, can be used in case the {@link Member warnedMember} is null
|
||||
*/
|
||||
private ServerUser warnedUser;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
package dev.sheldan.abstracto.utility.repository.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.service.MemberService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
|
||||
import dev.sheldan.abstracto.utility.repository.StarStatsGuildUserResult;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -22,6 +23,12 @@ public class StarStatsUserConverter {
|
||||
@Autowired
|
||||
private UserInServerManagementService userInServerManagementService;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
|
||||
@Autowired
|
||||
private StarStatsUserConverter self;
|
||||
|
||||
public List<CompletableFuture<StarStatsUser>> convertToStarStatsUser(List<StarStatsGuildUserResult> users, Long serverId) {
|
||||
List<CompletableFuture<StarStatsUser>> result = new ArrayList<>();
|
||||
users.forEach(starStatsUserResult ->
|
||||
@@ -32,14 +39,18 @@ public class StarStatsUserConverter {
|
||||
|
||||
private CompletableFuture<StarStatsUser> createStarStatsUser(Long serverId, StarStatsGuildUserResult starStatsGuildUserResult) {
|
||||
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(starStatsGuildUserResult.getUserId());
|
||||
return memberService.getMemberInServerAsync(serverId, aUserInAServer.getUserReference().getId()).thenApply(member ->
|
||||
StarStatsUser
|
||||
.builder()
|
||||
.starCount(starStatsGuildUserResult.getStarCount())
|
||||
.member(member)
|
||||
// TODO properly load this instance instead of just building one
|
||||
.user(AUser.builder().id(starStatsGuildUserResult.getUserId()).build())
|
||||
.build()
|
||||
);
|
||||
return memberService.getMemberInServerAsync(serverId, aUserInAServer.getUserReference().getId())
|
||||
.thenApply(member -> self.loadStarStatsUser(starStatsGuildUserResult, member))
|
||||
.exceptionally(throwable -> self.loadStarStatsUser(starStatsGuildUserResult, null));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public StarStatsUser loadStarStatsUser(StarStatsGuildUserResult starStatsGuildUserResult, net.dv8tion.jda.api.entities.Member member) {
|
||||
return StarStatsUser
|
||||
.builder()
|
||||
.starCount(starStatsGuildUserResult.getStarCount())
|
||||
.member(member)
|
||||
.user(userInServerManagementService.loadOrCreateUser(starStatsGuildUserResult.getUserId()))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import net.dv8tion.jda.api.entities.Member;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
@@ -33,13 +34,14 @@ public class StarStatsUserConverterTest {
|
||||
@Mock
|
||||
private UserInServerManagementService userInServerManagementService;
|
||||
|
||||
@Mock
|
||||
private StarStatsUserConverter self;
|
||||
|
||||
@Test
|
||||
public void testConversionOfMultipleItems() {
|
||||
Long serverId = 5L;
|
||||
Long firstUserId = 5L;
|
||||
Integer firstStarCount = 5;
|
||||
Long secondUserId = 9L;
|
||||
Integer secondStarCount = 10;
|
||||
List<StarStatsGuildUserResult> results = new ArrayList<>();
|
||||
StarStatsGuildUserResult firstResult = Mockito.mock(StarStatsGuildUserResult.class);
|
||||
Member firstMember = Mockito.mock(Member.class);
|
||||
@@ -50,7 +52,6 @@ public class StarStatsUserConverterTest {
|
||||
when(userInServerManagementService.loadOrCreateUser(firstUserId)).thenReturn(firstUser);
|
||||
when(memberService.getMemberInServerAsync(serverId, firstUserId)).thenReturn(CompletableFuture.completedFuture(firstMember));
|
||||
when(firstResult.getUserId()).thenReturn(firstUserId);
|
||||
when(firstResult.getStarCount()).thenReturn(firstStarCount);
|
||||
results.add(firstResult);
|
||||
StarStatsGuildUserResult secondResult = Mockito.mock(StarStatsGuildUserResult.class);
|
||||
Member secondMember = Mockito.mock(Member.class);
|
||||
@@ -62,19 +63,20 @@ public class StarStatsUserConverterTest {
|
||||
when(memberService.getMemberInServerAsync(serverId, secondUserId)).thenReturn(CompletableFuture.completedFuture(secondMember));
|
||||
|
||||
when(secondResult.getUserId()).thenReturn(secondUserId);
|
||||
when(secondResult.getStarCount()).thenReturn(secondStarCount);
|
||||
results.add(secondResult);
|
||||
|
||||
List<CompletableFuture<StarStatsUser>> starStatsUsers = testUnit.convertToStarStatsUser(results, serverId);
|
||||
StarStatsUser firstConverted = starStatsUsers.get(0).join();
|
||||
Assert.assertEquals(firstStarCount, firstConverted.getStarCount());
|
||||
Assert.assertEquals(firstMember, firstConverted.getMember());
|
||||
Assert.assertEquals(firstUserId, firstConverted.getUser().getId());
|
||||
StarStatsUser secondConverted = starStatsUsers.get(1).join();
|
||||
Assert.assertEquals(secondStarCount, secondConverted.getStarCount());
|
||||
Assert.assertEquals(secondMember, secondConverted.getMember());
|
||||
Assert.assertEquals(secondUserId, secondConverted.getUser().getId());
|
||||
Assert.assertEquals(2, starStatsUsers.size());
|
||||
testUnit.convertToStarStatsUser(results, serverId);
|
||||
ArgumentCaptor<StarStatsGuildUserResult> resultArgumentCaptor = ArgumentCaptor.forClass(StarStatsGuildUserResult.class);
|
||||
ArgumentCaptor<Member> memberArgumentCaptor = ArgumentCaptor.forClass(Member.class);
|
||||
verify(self, times(2)).loadStarStatsUser(resultArgumentCaptor.capture(), memberArgumentCaptor.capture());
|
||||
List<StarStatsGuildUserResult> resultCaptorValues = resultArgumentCaptor.getAllValues();
|
||||
Assert.assertEquals(2, resultCaptorValues.size());
|
||||
Assert.assertEquals(firstResult, resultCaptorValues.get(0));
|
||||
Assert.assertEquals(secondResult, resultCaptorValues.get(1));
|
||||
List<Member> memberCaptorValues = memberArgumentCaptor.getAllValues();
|
||||
Assert.assertEquals(2, memberCaptorValues.size());
|
||||
Assert.assertEquals(firstMember, memberCaptorValues.get(0));
|
||||
Assert.assertEquals(secondMember, memberCaptorValues.get(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -11,7 +11,7 @@ import net.dv8tion.jda.api.entities.Member;
|
||||
@Setter
|
||||
@Builder
|
||||
public class StarStatsUser {
|
||||
private AUser user;
|
||||
private AUserInAServer user;
|
||||
private Member member;
|
||||
private Integer starCount;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user