aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2016-09-20 19:55:02 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2016-09-22 14:10:31 +0200
commitb6728e59f8f999a24029bfe6b2f89d63a0359d51 (patch)
tree10b4af7f689bccc2093e91f6c18fced25f216ca1
parent3f06e24f94f48209bb847bb5b763c96c59b23ee7 (diff)
downloadsonarqube-b6728e59f8f999a24029bfe6b2f89d63a0359d51.tar.gz
sonarqube-b6728e59f8f999a24029bfe6b2f89d63a0359d51.zip
SONAR-8117 Allow rating measures when updating quality gates with WS
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java3
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java44
2 files changed, 36 insertions, 11 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java
index 1dbe6f9150e..039dca7f630 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java
@@ -21,7 +21,6 @@
package org.sonar.server.qualitygate;
import java.util.Collection;
-import java.util.Objects;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import org.apache.commons.lang.BooleanUtils;
@@ -137,7 +136,7 @@ public class QualityGateConditionsUpdater {
}
private static boolean isAvailableForInit(MetricDto metric) {
- return !metric.isDataType() && !CoreMetrics.ALERT_STATUS_KEY.equals(metric.getKey()) && !Objects.equals(Metric.ValueType.RATING.name(), metric.getValueType());
+ return !metric.isDataType() && !CoreMetrics.ALERT_STATUS_KEY.equals(metric.getKey());
}
private static void checkOperator(MetricDto metric, String operator, Errors errors) {
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java
index dab499a560f..aef9ffac6e1 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGateConditionsUpdaterTest.java
@@ -99,11 +99,24 @@ public class QualityGateConditionsUpdaterTest {
}
@Test
+ public void create_condition_on_rating_metric() {
+ MetricDto metricDto = dbClient.metricDao().insert(dbSession, newMetricDto()
+ .setKey("rating_metric")
+ .setValueType(RATING.name())
+ .setHidden(false));
+ dbSession.commit();
+
+ QualityGateConditionDto result = underTest.createCondition(dbSession, qualityGateDto.getId(), "rating_metric", "LT", null, "3", 1);
+
+ verifyCondition(result, metricDto.getId(), "LT", null, "3", 1);
+ }
+
+ @Test
public void fail_to_create_condition_when_condition_on_same_metric_already_exist() throws Exception {
dbClient.gateConditionDao().insert(new QualityGateConditionDto()
- .setQualityGateId(qualityGateDto.getId())
- .setMetricId(coverageMetricDto.getId())
- .setPeriod(null),
+ .setQualityGateId(qualityGateDto.getId())
+ .setMetricId(coverageMetricDto.getId())
+ .setPeriod(null),
dbSession);
expectedException.expect(BadRequestException.class);
@@ -114,9 +127,9 @@ public class QualityGateConditionsUpdaterTest {
@Test
public void fail_to_create_condition_when_condition_on_same_metric_and_on_leak_period_already_exist() throws Exception {
dbClient.gateConditionDao().insert(new QualityGateConditionDto()
- .setQualityGateId(qualityGateDto.getId())
- .setMetricId(coverageMetricDto.getId())
- .setPeriod(1),
+ .setQualityGateId(qualityGateDto.getId())
+ .setMetricId(coverageMetricDto.getId())
+ .setPeriod(1),
dbSession);
expectedException.expect(BadRequestException.class);
@@ -191,6 +204,20 @@ public class QualityGateConditionsUpdaterTest {
}
@Test
+ public void update_condition_on_rating_metric() {
+ MetricDto metricDto = dbClient.metricDao().insert(dbSession, newMetricDto()
+ .setKey("rating_metric")
+ .setValueType(RATING.name())
+ .setHidden(false));
+ dbSession.commit();
+ QualityGateConditionDto condition = insertCondition(metricDto.getId(), "LT", null, "3", null);
+
+ QualityGateConditionDto result = underTest.updateCondition(dbSession, condition.getId(), "rating_metric", "GT", "4", null, 1);
+
+ verifyCondition(result, metricDto.getId(), "GT", "4", null, 1);
+ }
+
+ @Test
@UseDataProvider("invalid_metrics")
public void fail_to_update_condition_on_invalid_metric(String metricKey, Metric.ValueType valueType, boolean hidden) {
MetricDto metricDto = dbClient.metricDao().insert(dbSession, newMetricDto()
@@ -221,13 +248,12 @@ public class QualityGateConditionsUpdaterTest {
return new Object[][] {
{ALERT_STATUS_KEY, INT, false},
{"data_metric", DATA, false},
- {"hidden", INT, true},
- {"rating_metric", RATING, false},
+ {"hidden", INT, true}
};
}
private QualityGateConditionDto insertCondition(long metricId, String operator, @Nullable String warning, @Nullable String error,
- @Nullable Integer period) {
+ @Nullable Integer period) {
QualityGateConditionDto qualityGateConditionDto = new QualityGateConditionDto().setQualityGateId(qualityGateDto.getId())
.setMetricId(metricId)
.setOperator(operator)