diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-02-07 12:25:32 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-02-07 12:25:32 +0100 |
commit | eb6c3ebf24003a296f2a69ce5ba60fbd24e651b6 (patch) | |
tree | e65671b30a2e2cdd9ef4a9fa9681aacfa4e0bda7 /sonar-core | |
parent | 18c4b94aaf596645ecd53d9df1101986a7a1d599 (diff) | |
download | sonarqube-eb6c3ebf24003a296f2a69ce5ba60fbd24e651b6.tar.gz sonarqube-eb6c3ebf24003a296f2a69ce5ba60fbd24e651b6.zip |
Update issue ui in resource viewer update to be consistent with issues filter
Diffstat (limited to 'sonar-core')
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(); + } } |