import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
-
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import static com.google.common.collect.Lists.newArrayList;
List<RuleDto> removedRules = newArrayList();
for (RuleDto ruleDto : ruleDtos) {
boolean toBeRemoved = true;
- // Update custom rules from template
+
+ // 0. Case Rule is a Custom rule
if (ruleDto.getTemplateId() != null) {
RuleDto template = dbClient.ruleDao().getTemplate(ruleDto, session);
+
+ // 0.1 CustomRule has an Active Template
if (template != null && RuleStatus.REMOVED != template.getStatus()) {
if (updateCustomRuleFromTemplateRule(ruleDto, template)) {
dbClient.ruleDao().update(session, ruleDto);
customRule.setEffortToFixDescription(templateRule.getEffortToFixDescription());
changed = true;
}
+ if (customRule.getStatus() != templateRule.getStatus()) {
+ customRule.setStatus(templateRule.getStatus());
+ changed = true;
+ }
return changed;
}
package org.sonar.server.rule;
import com.google.common.collect.ImmutableMap;
-import org.junit.*;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Ignore;
+import org.junit.Test;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.RuleStatus;
import org.sonar.api.rule.Severity;
}
@Test
- @Ignore("To be fixed")
public void not_update_rule_if_no_change() throws Exception {
// Store updated at date
Date updatedAt = index.getByKey(RuleTesting.XOO_X1).updatedAt();
// Re-execute startup tasks
tester.get(Platform.class).executeStartupTasks();
+ dbSession.clearCache();
// Verify rule has not been updated
Rule customRuleReloaded = index.getByKey(RuleTesting.XOO_X1);
}
@Test
- @Ignore("To be fixed")
public void reactivate_disabled_rules() {
verifyRulesInDb();
RuleDto rule = db.ruleDao().getByKey(dbSession, RuleTesting.XOO_X1);
assertThat(rule.getStatus()).isEqualTo(RuleStatus.REMOVED);
+ dbSession.clearCache();
// Reactivate plugin X1
rulesDefinition.includeX1 = true;
}
@Test
- @Ignore("To be fixed")
public void reactivate_disabled_custom_rules() {
Rule templateRule = index.getByKey(RuleKey.of("xoo", "template1"));
// Restart without template rule
rulesDefinition.includeTemplate1 = false;
tester.get(Platform.class).executeStartupTasks();
+ dbSession.clearCache();
+
// Verify custom rule is removed
assertThat(index.getByKey(customRuleKey).status()).isEqualTo(RuleStatus.REMOVED);
// Restart with template rule
rulesDefinition.includeTemplate1 = true;
tester.get(Platform.class).executeStartupTasks();
+ dbSession.clearCache();
// Verify custom rule is reactivate
assertThat(index.getByKey(customRuleKey).status()).isEqualTo(RuleStatus.READY);