[AB-149] adding command to reset configuration to default values

removing listener to create system config instances
adding default value retrieval to appropriate places
making config key handling case insensitive
changing exp multiplier to double value
refactoring experience service bean test
This commit is contained in:
Sheldan
2021-02-24 21:11:01 +01:00
parent 20b6b37151
commit 5f6746d742
35 changed files with 613 additions and 560 deletions

View File

@@ -1,27 +0,0 @@
package dev.sheldan.abstracto.moderation.listener;
import dev.sheldan.abstracto.core.listener.sync.entity.ServerConfigListener;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
import dev.sheldan.abstracto.core.service.management.DefaultConfigManagementService;
import dev.sheldan.abstracto.moderation.config.features.WarningDecayFeature;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class WarnDecayConfigListener implements ServerConfigListener {
@Autowired
private ConfigManagementService configManagementService;
@Autowired
private DefaultConfigManagementService defaultConfigManagementService;
@Override
public void updateServerConfig(AServer server) {
log.info("Updating decay day configuration for server {}.", server.getId());
configManagementService.loadOrCreateIfNotExists(server.getId(), WarningDecayFeature.DECAY_DAYS_KEY, defaultConfigManagementService.getDefaultConfig(WarningDecayFeature.DECAY_DAYS_KEY).getLongValue());
}
}

View File

@@ -5,6 +5,7 @@ import dev.sheldan.abstracto.core.models.ServerSpecificId;
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.management.DefaultConfigManagementService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
import dev.sheldan.abstracto.core.utils.FutureUtils;
@@ -70,6 +71,9 @@ public class WarnServiceBean implements WarnService {
@Autowired
private ServerManagementService serverManagementService;
@Autowired
private DefaultConfigManagementService defaultConfigManagementService;
@Autowired
private FeatureModeService featureModeService;
@@ -124,8 +128,9 @@ public class WarnServiceBean implements WarnService {
@Override
@Transactional
public CompletableFuture<Void> decayWarningsForServer(AServer server) {
Long days = configService.getLongValue(WarningDecayFeature.DECAY_DAYS_KEY, server.getId());
public CompletableFuture<Void> decayWarningsForServer(AServer server) {
Long defaultDays = defaultConfigManagementService.getDefaultConfig(WarningDecayFeature.DECAY_DAYS_KEY).getLongValue();
Long days = configService.getLongValue(WarningDecayFeature.DECAY_DAYS_KEY, server.getId(), defaultDays);
Instant cutOffDay = Instant.now().minus(days, ChronoUnit.DAYS);
log.info("Decaying warnings on server {} which are older than {}.", server.getId(), cutOffDay);
List<Warning> warningsToDecay = warnManagementService.getActiveWarningsInServerOlderThan(server, cutOffDay);

View File

@@ -3,7 +3,9 @@ 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.AUserInAServer;
import dev.sheldan.abstracto.core.models.property.SystemConfigProperty;
import dev.sheldan.abstracto.core.service.*;
import dev.sheldan.abstracto.core.service.management.DefaultConfigManagementService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
@@ -24,10 +26,7 @@ import net.dv8tion.jda.api.entities.User;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.*;
import org.mockito.junit.MockitoJUnitRunner;
import java.time.Instant;
@@ -122,6 +121,9 @@ public class WarnServiceBeanTest {
@Mock
private FeatureModeService featureModeService;
@Mock
private DefaultConfigManagementService defaultConfigManagementService;
private static final String NOTIFICATION_TEXT = "text";
private static final String GUILD_NAME = "guild";
private static final Long SERVER_ID = 4L;
@@ -129,7 +131,7 @@ public class WarnServiceBeanTest {
@Test
public void testDecayWarning() {
Instant date = Instant.now();
when(firstWarning.getWarnId()).thenReturn(new ServerSpecificId(3L, 4L));
when(firstWarning.getWarnId()).thenReturn(new ServerSpecificId(SERVER_ID, 4L));
testUnit.decayWarning(firstWarning, date);
verify(firstWarning, times(1)).setDecayed(true);
verify(firstWarning, times(1)).setDecayDate(date);
@@ -233,7 +235,11 @@ public class WarnServiceBeanTest {
private void setupWarnDecay() {
setupWarnings();
when(configService.getLongValue(WarningDecayFeature.DECAY_DAYS_KEY, server.getId())).thenReturn(5L);
SystemConfigProperty defaultDecayDays = Mockito.mock(SystemConfigProperty.class);
Long defaultDayCount = 4L;
when(defaultDecayDays.getLongValue()).thenReturn(defaultDayCount);
when(defaultConfigManagementService.getDefaultConfig(WarningDecayFeature.DECAY_DAYS_KEY)).thenReturn(defaultDecayDays);
when(configService.getLongValue(WarningDecayFeature.DECAY_DAYS_KEY, SERVER_ID, defaultDayCount)).thenReturn(5L);
List<Warning> warnings = Arrays.asList(firstWarning, secondWarning);
when(memberService.getMemberInServerAsync(warningUser)).thenReturn(CompletableFuture.completedFuture(warningMember));
when(memberService.getMemberInServerAsync(firstWarnedUser)).thenReturn(CompletableFuture.completedFuture(warnedMember));