From 63fce9e7888d45be4fa0eaf90414529c8eb22aae Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Thu, 28 Nov 2013 09:02:19 +0100 Subject: [PATCH] SONAR-4897 Improve the way are displayed characteristic infos on an issue --- .../sonar/core/technicaldebt/TechnicalDebtFinder.java | 5 ++--- .../core/technicaldebt/TechnicalDebtFinderTest.java | 9 ++++----- .../technicaldebt/InternalRubyTechnicalDebtService.java | 5 +++-- .../webapp/WEB-INF/app/controllers/issue_controller.rb | 4 ++-- .../InternalRubyTechnicalDebtServiceTest.java | 6 ++++-- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtFinder.java b/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtFinder.java index ae5605bf84d..4a512a7d3e9 100644 --- a/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtFinder.java +++ b/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtFinder.java @@ -66,9 +66,8 @@ public class TechnicalDebtFinder implements ServerComponent, BatchComponent { return model; } - public Requirement findRequirement(Integer ruleId) { - Rule rule = ruleFinder.findById(ruleId); - CharacteristicDto requirementDto = dao.selectRequirement(ruleId); + public Requirement findRequirement(Rule rule) { + CharacteristicDto requirementDto = dao.selectRequirement(rule.getId()); CharacteristicDto characteristicDto = dao.selectCharacteristic(requirementDto.getParentId()); CharacteristicDto rootCharacteristicDto = dao.selectCharacteristic(characteristicDto.getParentId()); diff --git a/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtFinderTest.java b/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtFinderTest.java index 575656459d7..46608377b31 100644 --- a/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtFinderTest.java +++ b/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtFinderTest.java @@ -132,18 +132,17 @@ public class TechnicalDebtFinderTest { @Test public void find_requirement() throws Exception { - Integer ruleId = 1; + Rule rule = Rule.create("repo", "key"); + rule.setId(1); - when(dao.selectRequirement(ruleId)).thenReturn( + when(dao.selectRequirement(rule.getId())).thenReturn( new CharacteristicDto().setId(3).setRuleId(10).setParentId(2).setFunction("linear").setFactorValue(30.0).setFactorUnit("mn")); when(dao.selectCharacteristic(2)).thenReturn( new CharacteristicDto().setId(2).setKey("COMPILER_RELATED_PORTABILITY").setParentId(1)); when(dao.selectCharacteristic(1)).thenReturn( new CharacteristicDto().setId(1).setKey("PORTABILITY")); - when(ruleFinder.findById(ruleId)).thenReturn(Rule.create("repo", "key")); - - Requirement result = finder.findRequirement(1); + Requirement result = finder.findRequirement(rule); assertThat(result.ruleKey()).isEqualTo(RuleKey.of("repo", "key")); assertThat(result.characteristic().key()).isEqualTo("COMPILER_RELATED_PORTABILITY"); diff --git a/sonar-server/src/main/java/org/sonar/server/technicaldebt/InternalRubyTechnicalDebtService.java b/sonar-server/src/main/java/org/sonar/server/technicaldebt/InternalRubyTechnicalDebtService.java index 91191698e6b..8d47f177fbd 100644 --- a/sonar-server/src/main/java/org/sonar/server/technicaldebt/InternalRubyTechnicalDebtService.java +++ b/sonar-server/src/main/java/org/sonar/server/technicaldebt/InternalRubyTechnicalDebtService.java @@ -22,6 +22,7 @@ package org.sonar.server.technicaldebt; import org.sonar.api.ServerComponent; import org.sonar.api.issue.internal.WorkDayDuration; +import org.sonar.api.rules.Rule; import org.sonar.api.technicaldebt.Requirement; import org.sonar.core.technicaldebt.TechnicalDebtFinder; import org.sonar.core.technicaldebt.TechnicalDebtModel; @@ -49,8 +50,8 @@ public class InternalRubyTechnicalDebtService implements ServerComponent { return finder.findRootCharacteristics(); } - public Requirement findRequirement(Integer ruleId){ - return finder.findRequirement(ruleId); + public Requirement findRequirement(Rule rule){ + return finder.findRequirement(rule); } } diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/issue_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/issue_controller.rb index 692b43df849..ca47f3db450 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/issue_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/issue_controller.rb @@ -207,8 +207,8 @@ class IssueController < ApplicationController @issue_results = Api.issues.find(params[:id]) @issue = @issue_results.first() - rule_id = @issue_results.rule(@issue).id - @requirement = Internal.technical_debt.findRequirement(rule_id) + rule = @issue_results.rule(@issue) + @requirement = Internal.technical_debt.findRequirement(rule) render :partial => 'issue/technicaldebt' end diff --git a/sonar-server/src/test/java/org/sonar/server/technicaldebt/InternalRubyTechnicalDebtServiceTest.java b/sonar-server/src/test/java/org/sonar/server/technicaldebt/InternalRubyTechnicalDebtServiceTest.java index 54569320657..feb9d03a9d0 100644 --- a/sonar-server/src/test/java/org/sonar/server/technicaldebt/InternalRubyTechnicalDebtServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/technicaldebt/InternalRubyTechnicalDebtServiceTest.java @@ -25,6 +25,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.sonar.api.issue.internal.WorkDayDuration; +import org.sonar.api.rules.Rule; import org.sonar.api.technicaldebt.Requirement; import org.sonar.core.technicaldebt.TechnicalDebtFinder; import org.sonar.core.technicaldebt.TechnicalDebtModel; @@ -74,9 +75,10 @@ public class InternalRubyTechnicalDebtServiceTest { @Test public void find_requirement() { + Rule rule = Rule.create("repo", "key"); Requirement requirement = new Requirement(); - when(finder.findRequirement(1)).thenReturn(requirement); - assertThat(service.findRequirement(1)).isEqualTo(requirement); + when(finder.findRequirement(rule)).thenReturn(requirement); + assertThat(service.findRequirement(rule)).isEqualTo(requirement); } } -- 2.39.5