mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-03 08:19:54 +00:00
[AB-163] fixing printing all possible feature modes in case an unknown one was provided for enableMode/disableMode
This commit is contained in:
@@ -45,7 +45,7 @@ public class DisableMode extends AbstractConditionableCommand {
|
||||
String featureName = (String) commandContext.getParameters().getParameters().get(0);
|
||||
String modeName = (String) commandContext.getParameters().getParameters().get(1);
|
||||
FeatureDefinition featureDefinition = featureConfigService.getFeatureEnum(featureName);
|
||||
FeatureMode featureMode = featureModeService.getFeatureModeForKey(modeName);
|
||||
FeatureMode featureMode = featureModeService.getFeatureModeForKey(featureName, modeName);
|
||||
AServer server = serverManagementService.loadServer(commandContext.getGuild());
|
||||
featureModeService.disableFeatureModeForFeature(featureDefinition, server, featureMode);
|
||||
return CommandResult.fromSuccess();
|
||||
|
||||
@@ -45,7 +45,7 @@ public class EnableMode extends AbstractConditionableCommand {
|
||||
String featureName = (String) commandContext.getParameters().getParameters().get(0);
|
||||
String modeName = (String) commandContext.getParameters().getParameters().get(1);
|
||||
FeatureDefinition featureDefinition = featureConfigService.getFeatureEnum(featureName);
|
||||
FeatureMode featureMode = featureModeService.getFeatureModeForKey(modeName);
|
||||
FeatureMode featureMode = featureModeService.getFeatureModeForKey(featureName, modeName);
|
||||
AServer server = serverManagementService.loadServer(commandContext.getGuild().getIdLong());
|
||||
featureModeService.enableFeatureModeForFeature(featureDefinition, server, featureMode);
|
||||
return CommandResult.fromSuccess();
|
||||
|
||||
@@ -18,6 +18,7 @@ import net.dv8tion.jda.api.entities.Guild;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -46,6 +47,8 @@ public class FeatureModeServiceBean implements FeatureModeService {
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
private HashMap<String, List<String>> featureModes = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void enableFeatureModeForFeature(FeatureDefinition featureDefinition, AServer server, FeatureMode mode) {
|
||||
setOrCreateFeatureMode(featureDefinition, server, mode, true);
|
||||
@@ -107,19 +110,23 @@ public class FeatureModeServiceBean implements FeatureModeService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public FeatureMode getFeatureModeForKey(String key) {
|
||||
return getAllAvailableFeatureModes().stream().filter(mode -> mode.getKey().equalsIgnoreCase(key)).findAny().orElseThrow(() -> new FeatureModeNotFoundException(key, getFeatureModesAsStrings()));
|
||||
public FeatureMode getFeatureModeForKey(String featureKey, String featureModeKey) {
|
||||
return getAllAvailableFeatureModes()
|
||||
.stream()
|
||||
.filter(mode -> mode.getKey().equalsIgnoreCase(featureModeKey))
|
||||
.findAny()
|
||||
.orElseThrow(() -> new FeatureModeNotFoundException(featureModeKey, getFeatureModesAsStrings(featureKey)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FeatureMode> getAllAvailableFeatureModes() {
|
||||
List<FeatureMode> featureModes = new ArrayList<>();
|
||||
featureConfigService.getAllFeatureConfigs().forEach(featureConfig -> featureModes.addAll(featureConfig.getAvailableModes()));
|
||||
return featureModes;
|
||||
List<FeatureMode> fullFeatureModes = new ArrayList<>();
|
||||
featureConfigService.getAllFeatureConfigs().forEach(featureConfig -> fullFeatureModes.addAll(featureConfig.getAvailableModes()));
|
||||
return fullFeatureModes;
|
||||
}
|
||||
|
||||
private List<String> getFeatureModesAsStrings() {
|
||||
return getAllAvailableFeatureModes().stream().map(FeatureMode::getKey).collect(Collectors.toList());
|
||||
private List<String> getFeatureModesAsStrings(String featureKey) {
|
||||
return featureModes.get(featureKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -199,4 +206,13 @@ public class FeatureModeServiceBean implements FeatureModeService {
|
||||
}
|
||||
|
||||
|
||||
@PostConstruct
|
||||
public void postConstruct() {
|
||||
featureConfigService.getAllFeatureConfigs().forEach(featureConfig -> {
|
||||
List<String> modes = new ArrayList<>();
|
||||
featureConfig.getAvailableModes().forEach(featureMode -> modes.add(featureMode.getKey()));
|
||||
featureModes.put(featureConfig.getFeature().getKey(), modes);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class DisableFeatureModeTest {
|
||||
FeatureDefinition featureDefinition = Mockito.mock(FeatureDefinition.class);
|
||||
when(featureConfigService.getFeatureEnum(featureName)).thenReturn(featureDefinition);
|
||||
FeatureMode featureMode = Mockito.mock(FeatureMode.class);
|
||||
when(featureModeService.getFeatureModeForKey(modeName)).thenReturn(featureMode);
|
||||
when(featureModeService.getFeatureModeForKey(featureName, modeName)).thenReturn(featureMode);
|
||||
CommandContext context = CommandTestUtilities.getWithParameters(Arrays.asList(featureName, modeName));
|
||||
AServer server = Mockito.mock(AServer.class);
|
||||
when(serverManagementService.loadServer(context.getGuild())).thenReturn(server);
|
||||
@@ -70,7 +70,7 @@ public class DisableFeatureModeTest {
|
||||
String modeName = "mode";
|
||||
FeatureDefinition featureDefinition = Mockito.mock(FeatureDefinition.class);
|
||||
when(featureConfigService.getFeatureEnum(featureName)).thenReturn(featureDefinition);
|
||||
when(featureModeService.getFeatureModeForKey(modeName)).thenThrow(new FeatureModeNotFoundException(modeName, new ArrayList<>()));
|
||||
when(featureModeService.getFeatureModeForKey(featureName, modeName)).thenThrow(new FeatureModeNotFoundException(modeName, new ArrayList<>()));
|
||||
CommandContext context = CommandTestUtilities.getWithParameters(Arrays.asList(featureName, modeName));
|
||||
testUnit.execute(context);
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class EnableFeatureModeTest {
|
||||
FeatureDefinition featureDefinition = Mockito.mock(FeatureDefinition.class);
|
||||
when(featureConfigService.getFeatureEnum(featureName)).thenReturn(featureDefinition);
|
||||
FeatureMode featureMode = Mockito.mock(FeatureMode.class);
|
||||
when(featureModeService.getFeatureModeForKey(modeName)).thenReturn(featureMode);
|
||||
when(featureModeService.getFeatureModeForKey(featureName, modeName)).thenReturn(featureMode);
|
||||
CommandContext context = CommandTestUtilities.getWithParameters(Arrays.asList(featureName, modeName));
|
||||
AServer server = Mockito.mock(AServer.class);
|
||||
when(context.getGuild().getIdLong()).thenReturn(SERVER_ID);
|
||||
@@ -74,7 +74,7 @@ public class EnableFeatureModeTest {
|
||||
String modeName = "mode";
|
||||
FeatureDefinition featureDefinition = Mockito.mock(FeatureDefinition.class);
|
||||
when(featureConfigService.getFeatureEnum(featureName)).thenReturn(featureDefinition);
|
||||
when(featureModeService.getFeatureModeForKey(modeName)).thenThrow(new FeatureModeNotFoundException(modeName, new ArrayList<>()));
|
||||
when(featureModeService.getFeatureModeForKey(featureName, modeName)).thenThrow(new FeatureModeNotFoundException(modeName, new ArrayList<>()));
|
||||
CommandContext context = CommandTestUtilities.getWithParameters(Arrays.asList(featureName, modeName));
|
||||
testUnit.execute(context);
|
||||
}
|
||||
|
||||
@@ -158,7 +158,7 @@ public class FeatureModeServiceBeanTest {
|
||||
FeatureMode featureMode2 = Mockito.mock(FeatureMode.class);
|
||||
when(featureConfig1.getAvailableModes()).thenReturn(Arrays.asList(featureMode, featureMode2));
|
||||
when(featureConfigService.getAllFeatureConfigs()).thenReturn(Arrays.asList(featureConfig1));
|
||||
FeatureMode featureModeForKey = testUnit.getFeatureModeForKey(FEATURE_MODE);
|
||||
FeatureMode featureModeForKey = testUnit.getFeatureModeForKey(FEATURE_NAME, FEATURE_MODE);
|
||||
Assert.assertEquals(featureMode, featureModeForKey);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ public interface FeatureModeService {
|
||||
boolean featureModeActive(FeatureDefinition featureDefinition, Long serverId, FeatureMode mode);
|
||||
boolean featureModeActive(FeatureDefinition featureDefinition, Guild guild, FeatureMode mode);
|
||||
void validateActiveFeatureMode(Long serverId, FeatureDefinition featureDefinition, FeatureMode mode);
|
||||
FeatureMode getFeatureModeForKey(String key);
|
||||
FeatureMode getFeatureModeForKey(String feature, String modeKey);
|
||||
List<FeatureMode> getAllAvailableFeatureModes();
|
||||
List<FeatureModeDisplay> getEffectiveFeatureModes(AServer server);
|
||||
List<FeatureModeDisplay> getEffectiveFeatureModes(AServer server, AFeature feature);
|
||||
|
||||
Reference in New Issue
Block a user