mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-07 01:30:49 +00:00
[AB-166] refactored conditions to not use exceptions for their regular case, split up feature mode exception into condition and exception, if the conditions need to be checked somewhere else, a separate exception is required, fixed command not being disabled properly in channels
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.exception.CommandDisabledException;
|
||||
import dev.sheldan.abstracto.core.command.condition.detail.CommandDisabledDetail;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.service.ChannelGroupCommandService;
|
||||
@@ -21,10 +21,10 @@ public class CommandDisabledCondition implements CommandCondition {
|
||||
@Override
|
||||
public ConditionResult shouldExecute(CommandContext context, Command command) {
|
||||
ACommand acommand = commandManagementService.findCommandByName(command.getConfiguration().getName());
|
||||
Boolean booleanResult = channelGroupCommandService.isCommandEnabled(acommand, context.getUserInitiatedContext().getChannel());
|
||||
if(!booleanResult) {
|
||||
return ConditionResult.builder().result(true).exception(new CommandDisabledException()).build();
|
||||
Boolean commandEnabled = channelGroupCommandService.isCommandEnabled(acommand, context.getUserInitiatedContext().getChannel());
|
||||
if(!commandEnabled) {
|
||||
return ConditionResult.builder().result(false).conditionDetail(new CommandDisabledDetail()).build();
|
||||
}
|
||||
return ConditionResult.builder().result(true).reason("Command is enabled.").build();
|
||||
return ConditionResult.builder().result(true).build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.exception.InsufficientPermissionException;
|
||||
import dev.sheldan.abstracto.core.command.condition.detail.InsufficientPermissionConditionDetail;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommandInAServer;
|
||||
@@ -50,7 +50,7 @@ public class CommandDisallowedCondition implements CommandCondition {
|
||||
}
|
||||
}
|
||||
List<Role> allowedRoles = roleService.getRolesFromGuild(commandForServer.getAllowedRoles());
|
||||
InsufficientPermissionException exception = new InsufficientPermissionException(allowedRoles);
|
||||
return ConditionResult.builder().result(false).exception(exception).build();
|
||||
InsufficientPermissionConditionDetail exception = new InsufficientPermissionConditionDetail(allowedRoles);
|
||||
return ConditionResult.builder().result(false).conditionDetail(exception).build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
|
||||
public interface ConditionDetail extends Templatable {
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -11,6 +10,5 @@ import lombok.Setter;
|
||||
public class ConditionResult {
|
||||
private boolean result;
|
||||
private String reason;
|
||||
private Object additionalInfo;
|
||||
private AbstractoRunTimeException exception;
|
||||
private ConditionDetail conditionDetail;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.exception.FeatureDisabledException;
|
||||
import dev.sheldan.abstracto.core.command.condition.detail.FeatureDisabledConditionDetail;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
@@ -32,8 +32,8 @@ public class FeatureEnabledCondition implements CommandCondition {
|
||||
featureFlagValue = featureFlagService.getFeatureFlagValue(feature, context.getGuild().getIdLong());
|
||||
if(!featureFlagValue) {
|
||||
log.trace("Feature {} is disabled, disallows command {} to be executed in guild {}.", feature.getKey(), command.getConfiguration().getName(), context.getGuild().getId());
|
||||
FeatureDisabledException exception = new FeatureDisabledException(featureConfigService.getFeatureDisplayForFeature(command.getFeature()));
|
||||
return ConditionResult.builder().result(false).exception(exception).build();
|
||||
FeatureDisabledConditionDetail exception = new FeatureDisabledConditionDetail(featureConfigService.getFeatureDisplayForFeature(command.getFeature()));
|
||||
return ConditionResult.builder().result(false).conditionDetail(exception).build();
|
||||
}
|
||||
}
|
||||
return ConditionResult.builder().result(true).build();
|
||||
|
||||
@@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.exception.IncorrectFeatureModeException;
|
||||
import dev.sheldan.abstracto.core.command.condition.detail.IncorrectFeatureModeConditionDetail;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -25,7 +25,11 @@ public class FeatureModeCondition implements CommandCondition {
|
||||
return ConditionResult.builder().result(true).build();
|
||||
}
|
||||
}
|
||||
throw new IncorrectFeatureModeException(feature, command.getFeatureModeLimitations());
|
||||
return ConditionResult
|
||||
.builder()
|
||||
.result(false)
|
||||
.conditionDetail(new IncorrectFeatureModeConditionDetail(feature, command.getFeatureModeLimitations()))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.exception.ImmuneUserException;
|
||||
import dev.sheldan.abstracto.core.command.condition.detail.ImmuneUserConditionDetail;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommandInAServer;
|
||||
@@ -43,8 +43,8 @@ public class ImmuneUserCondition implements CommandCondition {
|
||||
for (ARole role : commandForServer.getImmuneRoles()) {
|
||||
if (roleService.memberHasRole(member, role)) {
|
||||
log.trace("Member {} is immune against command {}, because of role {}.", member.getIdLong(), aCommand.getName(), role.getId());
|
||||
ImmuneUserException exception = new ImmuneUserException(roleService.getRoleFromGuild(role));
|
||||
return ConditionResult.builder().result(false).exception(exception).build();
|
||||
ImmuneUserConditionDetail exception = new ImmuneUserConditionDetail(roleService.getRoleFromGuild(role));
|
||||
return ConditionResult.builder().result(false).conditionDetail(exception).build();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.command.condition.detail;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.condition.ConditionDetail;
|
||||
|
||||
public class CommandDisabledDetail implements ConditionDetail {
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "command_disabled_condition";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return new Object();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package dev.sheldan.abstracto.core.command.condition.detail;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.condition.ConditionDetail;
|
||||
import dev.sheldan.abstracto.core.command.models.condition.FeatureDisabledConditionDetailModel;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class FeatureDisabledConditionDetail implements ConditionDetail {
|
||||
|
||||
private final FeatureDisabledConditionDetailModel model;
|
||||
|
||||
public FeatureDisabledConditionDetail(FeatureConfig featureConfig) {
|
||||
this.model = FeatureDisabledConditionDetailModel.builder().featureConfig(featureConfig).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "feature_disabled_condition";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package dev.sheldan.abstracto.core.command.condition.detail;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.condition.ConditionDetail;
|
||||
import dev.sheldan.abstracto.core.command.models.condition.ImmuneUserConditionDetailModel;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
|
||||
public class ImmuneUserConditionDetail implements ConditionDetail {
|
||||
|
||||
private final ImmuneUserConditionDetailModel model;
|
||||
|
||||
public ImmuneUserConditionDetail(Role role) {
|
||||
this.model = ImmuneUserConditionDetailModel.builder().role(role).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "immune_role_condition";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package dev.sheldan.abstracto.core.command.condition.detail;
|
||||
|
||||
|
||||
import dev.sheldan.abstracto.core.command.condition.ConditionDetail;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.models.exception.IncorrectFeatureModeModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class IncorrectFeatureModeConditionDetail implements ConditionDetail {
|
||||
|
||||
private final IncorrectFeatureModeModel model;
|
||||
|
||||
public IncorrectFeatureModeConditionDetail(FeatureEnum featureEnum, List<FeatureMode> requiredModes) {
|
||||
this.model = IncorrectFeatureModeModel.builder().featureEnum(featureEnum).requiredModes(requiredModes).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "incorrect_feature_mode_condition";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package dev.sheldan.abstracto.core.command.condition.detail;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.condition.ConditionDetail;
|
||||
import dev.sheldan.abstracto.core.command.models.condition.InsufficientPermissionCondtionDetailModel;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class InsufficientPermissionConditionDetail implements ConditionDetail {
|
||||
|
||||
private final InsufficientPermissionCondtionDetailModel model;
|
||||
|
||||
public InsufficientPermissionConditionDetail(List<Role> allowedRoles) {
|
||||
this.model = InsufficientPermissionCondtionDetailModel.builder().allowedRoles(allowedRoles).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "insufficient_role_condition";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.command.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
|
||||
public class CommandDisabledException extends AbstractoRunTimeException implements Templatable {
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "command_disabled_exception";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return new Object();
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.command.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.exception.FeatureDisabledExceptionModel;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class FeatureDisabledException extends AbstractoRunTimeException implements Templatable {
|
||||
|
||||
private final FeatureDisabledExceptionModel model;
|
||||
|
||||
public FeatureDisabledException(FeatureConfig featureConfig) {
|
||||
super("Feature has been disabled");
|
||||
this.model = FeatureDisabledExceptionModel.builder().featureConfig(featureConfig).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "feature_disabled_exception";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.command.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.exception.ImmuneUserExceptionModel;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
|
||||
public class ImmuneUserException extends AbstractoRunTimeException implements Templatable {
|
||||
|
||||
private final transient ImmuneUserExceptionModel model;
|
||||
|
||||
public ImmuneUserException(Role role) {
|
||||
super("User is immune against the command");
|
||||
this.model = ImmuneUserExceptionModel.builder().role(role).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "immune_role_exception";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
@@ -1,20 +1,18 @@
|
||||
package dev.sheldan.abstracto.core.exception;
|
||||
|
||||
package dev.sheldan.abstracto.core.command.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.models.exception.IncorrectFeatureModeExceptionModel;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.models.exception.IncorrectFeatureModeModel;
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class IncorrectFeatureModeException extends AbstractoRunTimeException implements Templatable {
|
||||
|
||||
private final IncorrectFeatureModeExceptionModel model;
|
||||
private final IncorrectFeatureModeModel model;
|
||||
|
||||
public IncorrectFeatureModeException(FeatureEnum featureEnum, List<FeatureMode> requiredModes) {
|
||||
super("Incorrect feature mode for the command.");
|
||||
this.model = IncorrectFeatureModeExceptionModel.builder().featureEnum(featureEnum).requiredModes(requiredModes).build();
|
||||
this.model = IncorrectFeatureModeModel.builder().featureEnum(featureEnum).requiredModes(requiredModes).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,28 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.command.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.exception.InsufficientPermissionExceptionModel;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.templating.Templatable;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class InsufficientPermissionException extends AbstractoRunTimeException implements Templatable {
|
||||
|
||||
private final InsufficientPermissionExceptionModel model;
|
||||
|
||||
public InsufficientPermissionException(List<Role> allowedRoles) {
|
||||
super("Insufficient permissions, required role not given.");
|
||||
this.model = InsufficientPermissionExceptionModel.builder().allowedRoles(allowedRoles).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "insufficient_role_exception";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.command.models.exception;
|
||||
package dev.sheldan.abstracto.core.command.models.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import lombok.Builder;
|
||||
@@ -10,6 +10,6 @@ import java.io.Serializable;
|
||||
@Setter
|
||||
@Getter
|
||||
@Builder
|
||||
public class FeatureDisabledExceptionModel implements Serializable {
|
||||
public class FeatureDisabledConditionDetailModel implements Serializable {
|
||||
private FeatureConfig featureConfig;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.command.models.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.condition.ConditionDetail;
|
||||
import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class GenericConditionModel {
|
||||
private GuildChannelMember guildChannelMember;
|
||||
private ConditionDetail conditionDetail;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.command.models.exception;
|
||||
package dev.sheldan.abstracto.core.command.models.condition;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
@@ -8,6 +8,6 @@ import net.dv8tion.jda.api.entities.Role;
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ImmuneUserExceptionModel {
|
||||
public class ImmuneUserConditionDetailModel {
|
||||
private Role role;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.command.models.exception;
|
||||
package dev.sheldan.abstracto.core.command.models.condition;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
@@ -9,6 +9,6 @@ import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
public class InsufficientPermissionExceptionModel implements Serializable {
|
||||
public class InsufficientPermissionCondtionDetailModel implements Serializable {
|
||||
private transient List<Role> allowedRoles;
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.config;
|
||||
|
||||
public interface FeatureEnum {
|
||||
import java.io.Serializable;
|
||||
|
||||
public interface FeatureEnum extends Serializable {
|
||||
String getKey();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.config;
|
||||
|
||||
public interface FeatureMode {
|
||||
import java.io.Serializable;
|
||||
|
||||
public interface FeatureMode extends Serializable {
|
||||
String getKey();
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import java.util.List;
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class IncorrectFeatureModeExceptionModel implements Serializable {
|
||||
public class IncorrectFeatureModeModel implements Serializable {
|
||||
private List<FeatureMode> requiredModes;
|
||||
private FeatureEnum featureEnum;
|
||||
}
|
||||
@@ -15,6 +15,7 @@ public interface FeatureModeService {
|
||||
void disableFeatureModeForFeature(FeatureEnum featureEnum, AServer server, FeatureMode mode);
|
||||
boolean featureModeActive(FeatureEnum featureEnum, AServer server, FeatureMode mode);
|
||||
boolean featureModeActive(FeatureEnum featureEnum, Long serverId, FeatureMode mode);
|
||||
void validateActiveFeatureMode(Long serverId, FeatureEnum featureEnum, FeatureMode mode);
|
||||
FeatureMode getFeatureModeForKey(String key);
|
||||
List<FeatureMode> getAllAvailableFeatureModes();
|
||||
List<FeatureModeDisplay> getEffectiveFeatureModes(AServer server);
|
||||
|
||||
@@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.exception.IncorrectFeatureModeException;
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
@@ -63,13 +62,13 @@ public class FeatureModeConditionTest {
|
||||
CommandTestUtilities.checkSuccessfulCondition(testUnit.shouldExecute(commandContext, command));
|
||||
}
|
||||
|
||||
@Test(expected = IncorrectFeatureModeException.class)
|
||||
@Test
|
||||
public void testLimitedCommand() {
|
||||
when(commandContext.getUserInitiatedContext()).thenReturn(userInitiatedServerContext);
|
||||
when(userInitiatedServerContext.getServer()).thenReturn(server);
|
||||
when(command.getFeature()).thenReturn(featureEnum);
|
||||
when(modeService.featureModeActive(featureEnum, server, featureMode)).thenReturn(false);
|
||||
when(command.getFeatureModeLimitations()).thenReturn(Arrays.asList(featureMode));
|
||||
testUnit.shouldExecute(commandContext, command);
|
||||
CommandTestUtilities.checkUnmetCondition(testUnit.shouldExecute(commandContext, command));
|
||||
}
|
||||
}
|
||||
@@ -32,6 +32,11 @@ public class CommandTestUtilities {
|
||||
Assert.assertTrue(result.isResult());
|
||||
}
|
||||
|
||||
public static void checkUnmetCondition(ConditionResult result) {
|
||||
Assert.assertFalse(result.isResult());
|
||||
Assert.assertNotNull(result.getConditionDetail());
|
||||
}
|
||||
|
||||
public static void executeNoParametersTest(Command com) {
|
||||
CommandContext context = CommandTestUtilities.getNoParameters();
|
||||
com.execute(context);
|
||||
|
||||
Reference in New Issue
Block a user