[AB-287] fixing members not being available breaking warning display converter

This commit is contained in:
Sheldan
2021-06-09 12:56:01 +02:00
parent 2c3b5fb651
commit d5f572262f
4 changed files with 48 additions and 18 deletions

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.moderation.converter; package dev.sheldan.abstracto.moderation.converter;
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.MemberDisplayModel;
import dev.sheldan.abstracto.core.models.ServerSpecificId; import dev.sheldan.abstracto.core.models.ServerSpecificId;
import dev.sheldan.abstracto.core.service.MemberService; import dev.sheldan.abstracto.core.service.MemberService;
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
@@ -47,10 +47,15 @@ public class WarnEntryConverter {
allFutures.add(warningMemberFuture); allFutures.add(warningMemberFuture);
allFutures.add(warnedMemberFuture); allFutures.add(warnedMemberFuture);
}); });
return FutureUtils.toSingleFutureGeneric(allFutures).thenApply(aVoid -> CompletableFuture<List<WarnEntry>> future = new CompletableFuture<>();
self.loadFullWarnEntries(loadedWarnings) FutureUtils.toSingleFutureGeneric(allFutures).whenComplete((unused, throwable) -> {
); try {
future.complete(self.loadFullWarnEntries(loadedWarnings));
} catch (Exception exception) {
future.completeExceptionally(exception);
}
});
return future;
} }
@Transactional @Transactional
@@ -60,17 +65,17 @@ public class WarnEntryConverter {
Warning warn = warnManagementService.findById(warning.getId(), warning.getServerId()); Warning warn = warnManagementService.findById(warning.getId(), warning.getServerId());
FutureMemberPair memberPair = loadedWarnInfo.get(warning); FutureMemberPair memberPair = loadedWarnInfo.get(warning);
Member warnedMember = !memberPair.getSecondMember().isCompletedExceptionally() ? memberPair.getSecondMember().join() : null; Member warnedMember = !memberPair.getSecondMember().isCompletedExceptionally() ? memberPair.getSecondMember().join() : null;
FullUserInServer warnedUser = FullUserInServer MemberDisplayModel warnedUser = MemberDisplayModel
.builder() .builder()
.member(warnedMember) .member(warnedMember)
.aUserInAServer(warn.getWarnedUser()) .userId(warn.getWarnedUser().getUserReference().getId())
.build(); .build();
Member warningMember = !memberPair.getFirstMember().isCompletedExceptionally() ? memberPair.getFirstMember().join() : null; Member warningMember = !memberPair.getFirstMember().isCompletedExceptionally() ? memberPair.getFirstMember().join() : null;
FullUserInServer warningUser = FullUserInServer MemberDisplayModel warningUser = MemberDisplayModel
.builder() .builder()
.member(warningMember) .member(warningMember)
.aUserInAServer(warn.getWarningUser()) .userId(warn.getWarningUser().getUserReference().getId())
.build(); .build();
WarnEntry entry = WarnEntry WarnEntry entry = WarnEntry
.builder() .builder()

View File

@@ -2,6 +2,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.AUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.service.MemberService; import dev.sheldan.abstracto.core.service.MemberService;
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
@@ -45,6 +46,8 @@ public class WarnEntryConverterTest {
private static final Long SERVER_ID = 5L; private static final Long SERVER_ID = 5L;
private static final Long WARN_ID_1 = 6L; private static final Long WARN_ID_1 = 6L;
private static final Long WARN_ID_2 = 7L; private static final Long WARN_ID_2 = 7L;
private static final Long USER_ID_1 = 8L;
private static final Long USER_ID_2 = 9L;
@Test @Test
public void testWithEmptyList() { public void testWithEmptyList() {
@@ -79,6 +82,12 @@ public class WarnEntryConverterTest {
public void testLoadingFullWarnings() { public void testLoadingFullWarnings() {
AUserInAServer warnedUser = Mockito.mock(AUserInAServer.class); AUserInAServer warnedUser = Mockito.mock(AUserInAServer.class);
AUserInAServer warningUser = Mockito.mock(AUserInAServer.class); AUserInAServer warningUser = Mockito.mock(AUserInAServer.class);
AUser firstUser = Mockito.mock(AUser.class);
when(firstUser.getId()).thenReturn(USER_ID_1);
when(warnedUser.getUserReference()).thenReturn(firstUser);
AUser secondUser = Mockito.mock(AUser.class);
when(secondUser.getId()).thenReturn(USER_ID_2);
when(warningUser.getUserReference()).thenReturn(secondUser);
Member warningMember = Mockito.mock(Member.class); Member warningMember = Mockito.mock(Member.class);
Member warnedMember = Mockito.mock(Member.class); Member warnedMember = Mockito.mock(Member.class);
Warning warning1 = Mockito.mock(Warning.class); Warning warning1 = Mockito.mock(Warning.class);
@@ -104,15 +113,15 @@ public class WarnEntryConverterTest {
WarnEntry firstEntry = models.get(0); WarnEntry firstEntry = models.get(0);
Assert.assertEquals(warningMember, firstEntry.getWarningUser().getMember()); Assert.assertEquals(warningMember, firstEntry.getWarningUser().getMember());
Assert.assertEquals(warnedMember, firstEntry.getWarnedUser().getMember()); Assert.assertEquals(warnedMember, firstEntry.getWarnedUser().getMember());
Assert.assertEquals(warnedUser, firstEntry.getWarnedUser().getAUserInAServer()); Assert.assertEquals(USER_ID_1, firstEntry.getWarnedUser().getUserId());
Assert.assertEquals(warningUser, firstEntry.getWarningUser().getAUserInAServer()); Assert.assertEquals(USER_ID_2, firstEntry.getWarningUser().getUserId());
Assert.assertEquals(WARN_ID_1, firstEntry.getWarning().getWarnId().getId()); Assert.assertEquals(WARN_ID_1, firstEntry.getWarning().getWarnId().getId());
Assert.assertEquals(SERVER_ID, firstEntry.getWarning().getWarnId().getServerId()); Assert.assertEquals(SERVER_ID, firstEntry.getWarning().getWarnId().getServerId());
WarnEntry secondEntry = models.get(1); WarnEntry secondEntry = models.get(1);
Assert.assertEquals(warningMember, secondEntry.getWarningUser().getMember()); Assert.assertEquals(warningMember, secondEntry.getWarningUser().getMember());
Assert.assertEquals(warnedMember, secondEntry.getWarnedUser().getMember()); Assert.assertEquals(warnedMember, secondEntry.getWarnedUser().getMember());
Assert.assertEquals(warnedUser, secondEntry.getWarnedUser().getAUserInAServer()); Assert.assertEquals(USER_ID_1, secondEntry.getWarnedUser().getUserId());
Assert.assertEquals(warningUser, secondEntry.getWarningUser().getAUserInAServer()); Assert.assertEquals(USER_ID_2, secondEntry.getWarningUser().getUserId());
Assert.assertEquals(WARN_ID_2, secondEntry.getWarning().getWarnId().getId()); Assert.assertEquals(WARN_ID_2, secondEntry.getWarning().getWarnId().getId());
Assert.assertEquals(SERVER_ID, secondEntry.getWarning().getWarnId().getServerId()); Assert.assertEquals(SERVER_ID, secondEntry.getWarning().getWarnId().getServerId());
} }

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.moderation.model.template.command; package dev.sheldan.abstracto.moderation.model.template.command;
import dev.sheldan.abstracto.core.models.FullUserInServer; import dev.sheldan.abstracto.core.models.MemberDisplayModel;
import dev.sheldan.abstracto.moderation.model.database.Warning; import dev.sheldan.abstracto.moderation.model.database.Warning;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
@@ -19,11 +19,11 @@ public class WarnEntry {
*/ */
private Warning warning; private Warning warning;
/** /**
* The {@link FullUserInServer} containing information about the user being warned. The member property is null if the user left the server * The {@link MemberDisplayModel} containing information about the user being warned. The member property is null if the user left the server
*/ */
private FullUserInServer warnedUser; private MemberDisplayModel warnedUser;
/** /**
* The {@link FullUserInServer} containing information about the user warning. The member property is null if the user left the server * The {@link MemberDisplayModel} containing information about the user warning. The member property is null if the user left the server
*/ */
private FullUserInServer warningUser; private MemberDisplayModel warningUser;
} }

View File

@@ -0,0 +1,16 @@
package dev.sheldan.abstracto.core.models;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.Member;
import java.io.Serializable;
@Setter
@Getter
@Builder
public class MemberDisplayModel implements Serializable {
private Long userId;
private transient Member member;
}