[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;
import dev.sheldan.abstracto.core.models.FullUserInServer;
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.service.MemberService;
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
@@ -47,10 +47,15 @@ public class WarnEntryConverter {
allFutures.add(warningMemberFuture);
allFutures.add(warnedMemberFuture);
});
return FutureUtils.toSingleFutureGeneric(allFutures).thenApply(aVoid ->
self.loadFullWarnEntries(loadedWarnings)
);
CompletableFuture<List<WarnEntry>> future = new CompletableFuture<>();
FutureUtils.toSingleFutureGeneric(allFutures).whenComplete((unused, throwable) -> {
try {
future.complete(self.loadFullWarnEntries(loadedWarnings));
} catch (Exception exception) {
future.completeExceptionally(exception);
}
});
return future;
}
@Transactional
@@ -60,17 +65,17 @@ public class WarnEntryConverter {
Warning warn = warnManagementService.findById(warning.getId(), warning.getServerId());
FutureMemberPair memberPair = loadedWarnInfo.get(warning);
Member warnedMember = !memberPair.getSecondMember().isCompletedExceptionally() ? memberPair.getSecondMember().join() : null;
FullUserInServer warnedUser = FullUserInServer
MemberDisplayModel warnedUser = MemberDisplayModel
.builder()
.member(warnedMember)
.aUserInAServer(warn.getWarnedUser())
.userId(warn.getWarnedUser().getUserReference().getId())
.build();
Member warningMember = !memberPair.getFirstMember().isCompletedExceptionally() ? memberPair.getFirstMember().join() : null;
FullUserInServer warningUser = FullUserInServer
MemberDisplayModel warningUser = MemberDisplayModel
.builder()
.member(warningMember)
.aUserInAServer(warn.getWarningUser())
.userId(warn.getWarningUser().getUserReference().getId())
.build();
WarnEntry entry = WarnEntry
.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.ServerSpecificId;
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;
@@ -45,6 +46,8 @@ public class WarnEntryConverterTest {
private static final Long SERVER_ID = 5L;
private static final Long WARN_ID_1 = 6L;
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
public void testWithEmptyList() {
@@ -79,6 +82,12 @@ public class WarnEntryConverterTest {
public void testLoadingFullWarnings() {
AUserInAServer warnedUser = 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 warnedMember = Mockito.mock(Member.class);
Warning warning1 = Mockito.mock(Warning.class);
@@ -104,15 +113,15 @@ public class WarnEntryConverterTest {
WarnEntry firstEntry = models.get(0);
Assert.assertEquals(warningMember, firstEntry.getWarningUser().getMember());
Assert.assertEquals(warnedMember, firstEntry.getWarnedUser().getMember());
Assert.assertEquals(warnedUser, firstEntry.getWarnedUser().getAUserInAServer());
Assert.assertEquals(warningUser, firstEntry.getWarningUser().getAUserInAServer());
Assert.assertEquals(USER_ID_1, firstEntry.getWarnedUser().getUserId());
Assert.assertEquals(USER_ID_2, firstEntry.getWarningUser().getUserId());
Assert.assertEquals(WARN_ID_1, firstEntry.getWarning().getWarnId().getId());
Assert.assertEquals(SERVER_ID, firstEntry.getWarning().getWarnId().getServerId());
WarnEntry secondEntry = models.get(1);
Assert.assertEquals(warningMember, secondEntry.getWarningUser().getMember());
Assert.assertEquals(warnedMember, secondEntry.getWarnedUser().getMember());
Assert.assertEquals(warnedUser, secondEntry.getWarnedUser().getAUserInAServer());
Assert.assertEquals(warningUser, secondEntry.getWarningUser().getAUserInAServer());
Assert.assertEquals(USER_ID_1, secondEntry.getWarnedUser().getUserId());
Assert.assertEquals(USER_ID_2, secondEntry.getWarningUser().getUserId());
Assert.assertEquals(WARN_ID_2, secondEntry.getWarning().getWarnId().getId());
Assert.assertEquals(SERVER_ID, secondEntry.getWarning().getWarnId().getServerId());
}

View File

@@ -1,6 +1,6 @@
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 lombok.Builder;
import lombok.Getter;
@@ -19,11 +19,11 @@ public class WarnEntry {
*/
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;
}