diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-09-20 19:55:02 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-09-22 14:10:31 +0200 |
commit | b6728e59f8f999a24029bfe6b2f89d63a0359d51 (patch) | |
tree | 10b4af7f689bccc2093e91f6c18fced25f216ca1 | |
parent | 3f06e24f94f48209bb847bb5b763c96c59b23ee7 (diff) | |
download | sonarqube-b6728e59f8f999a24029bfe6b2f89d63a0359d51.tar.gz sonarqube-b6728e59f8f999a24029bfe6b2f89d63a0359d51.zip |
SONAR-8117 Allow rating measures when updating quality gates with WS
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) |