aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-02-07 12:25:32 +0100
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-02-07 12:25:32 +0100
commiteb6c3ebf24003a296f2a69ce5ba60fbd24e651b6 (patch)
treee65671b30a2e2cdd9ef4a9fa9681aacfa4e0bda7 /sonar-core
parent18c4b94aaf596645ecd53d9df1101986a7a1d599 (diff)
downloadsonarqube-eb6c3ebf24003a296f2a69ce5ba60fbd24e651b6.tar.gz
sonarqube-eb6c3ebf24003a296f2a69ce5ba60fbd24e651b6.zip
Update issue ui in resource viewer update to be consistent with issues filter
Diffstat (limited to 'sonar-core')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManager.java16
-rw-r--r--sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java39
2 files changed, 53 insertions, 2 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManager.java b/sonar-core/src/main/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManager.java
index 86913704cf3..3bb7b5bae7d 100644
--- a/sonar-core/src/main/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManager.java
+++ b/sonar-core/src/main/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManager.java
@@ -22,6 +22,7 @@ package org.sonar.core.technicaldebt;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rules.Rule;
+import org.sonar.api.rules.RuleFinder;
import org.sonar.api.technicaldebt.server.Characteristic;
import org.sonar.api.technicaldebt.server.TechnicalDebtManager;
import org.sonar.api.technicaldebt.server.internal.DefaultCharacteristic;
@@ -31,6 +32,7 @@ import org.sonar.core.technicaldebt.db.CharacteristicDto;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
+
import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
@@ -41,9 +43,11 @@ import static com.google.common.collect.Lists.newArrayList;
public class DefaultTechnicalDebtManager implements TechnicalDebtManager {
private final CharacteristicDao dao;
+ private final RuleFinder ruleFinder;
- public DefaultTechnicalDebtManager(CharacteristicDao dao) {
+ public DefaultTechnicalDebtManager(CharacteristicDao dao, RuleFinder ruleFinder) {
this.dao = dao;
+ this.ruleFinder = ruleFinder;
}
public List<Characteristic> findRootCharacteristics() {
@@ -65,6 +69,16 @@ public class DefaultTechnicalDebtManager implements TechnicalDebtManager {
}
@CheckForNull
+ public Characteristic findRequirementByRuleId(int ruleId) {
+ CharacteristicDto requirementDto = dao.selectByRuleId(ruleId);
+ if (requirementDto != null) {
+ Rule rule = ruleFinder.findById(ruleId);
+ return toCharacteristic(requirementDto, RuleKey.of(rule.getRepositoryKey(), rule.getKey()));
+ }
+ return null;
+ }
+
+ @CheckForNull
public Characteristic findRequirementByRule(Rule rule) {
CharacteristicDto requirementDto = dao.selectByRuleId(rule.getId());
if (requirementDto != null) {
diff --git a/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java b/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java
index a20cb142ee9..7ac3d435309 100644
--- a/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java
@@ -27,6 +27,7 @@ import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rules.Rule;
+import org.sonar.api.rules.RuleFinder;
import org.sonar.api.technicaldebt.server.Characteristic;
import org.sonar.api.utils.WorkUnit;
import org.sonar.core.technicaldebt.db.CharacteristicDao;
@@ -44,11 +45,14 @@ public class DefaultTechnicalDebtManagerTest {
@Mock
CharacteristicDao dao;
+ @Mock
+ RuleFinder ruleFinder;
+
DefaultTechnicalDebtManager finder;
@Before
public void setUp() throws Exception {
- finder = new DefaultTechnicalDebtManager(dao);
+ finder = new DefaultTechnicalDebtManager(dao, ruleFinder);
}
@Test
@@ -126,4 +130,37 @@ public class DefaultTechnicalDebtManagerTest {
Characteristic result = finder.findCharacteristicById(2);
assertThat(result).isNull();
}
+
+ @Test
+ public void find_requirement_by_rule_id() throws Exception {
+ Rule rule = Rule.create("repo", "key");
+ rule.setId(1);
+
+ when(ruleFinder.findById(1)).thenReturn(rule);
+
+ when(dao.selectByRuleId(rule.getId())).thenReturn(
+ new CharacteristicDto().setId(3).setRuleId(10).setParentId(2).setRootId(1).setFunction("linear").setFactorValue(30.0).setFactorUnit("mn"));
+
+ Characteristic result = finder.findRequirementByRuleId(1);
+
+ assertThat(result.id()).isEqualTo(3);
+ assertThat(result.parentId()).isEqualTo(2);
+ assertThat(result.rootId()).isEqualTo(1);
+ assertThat(result.ruleKey()).isEqualTo(RuleKey.of("repo", "key"));
+ assertThat(result.function()).isEqualTo("linear");
+ assertThat(result.factor()).isEqualTo(WorkUnit.create(30.0, WorkUnit.MINUTES));
+ assertThat(result.offset()).isEqualTo(WorkUnit.create());
+ }
+
+ @Test
+ public void not_find_requirement_by_rule_id_on_unknown_requirement() throws Exception {
+ Rule rule = Rule.create("repo", "key");
+ rule.setId(1);
+
+ when(ruleFinder.findById(1)).thenReturn(rule);
+
+ when(dao.selectByRuleId(rule.getId())).thenReturn(null);
+
+ assertThat(finder.findRequirementByRuleId(1)).isNull();
+ }
}