checkOperator(metric, operator, errors);
checkThresholds(warningThreshold, errorThreshold, errors);
checkPeriod(metric, period, errors);
- checkRatingMetric(metric, operator, warningThreshold, errorThreshold, errors);
+ checkRatingMetric(metric, operator, warningThreshold, errorThreshold, period, errors);
if (!errors.isEmpty()) {
throw new BadRequestException(errors);
}
}
}
- private static void checkRatingMetric(MetricDto metric, String operator, @Nullable String warningThreshold, @Nullable String errorThreshold, Errors errors) {
+ private static void checkRatingMetric(MetricDto metric, String operator, @Nullable String warningThreshold, @Nullable String errorThreshold, @Nullable Integer period,
+ Errors errors) {
if (!metric.getValueType().equals(RATING.name())) {
return;
}
+ if (period != null && !metric.getKey().startsWith("new_")) {
+ errors.add(Message.of(format("The metric '%s' cannot be used on the leak period", metric.getShortName())));
+ }
if (!isValidRating(warningThreshold)) {
addInvalidRatingError(warningThreshold, errors);
return;
MetricDto ratingMetricDto = newMetricDto()
.setKey("rating_metric")
+ .setShortName("Rating")
.setValueType(RATING.name())
.setHidden(false);
verifyCondition(result, metricDto.getId(), "LT", null, "80", 1);
}
- @Test
- public void create_condition_on_rating_metric() {
- QualityGateConditionDto result = underTest.createCondition(dbSession, qualityGateDto.getId(), "rating_metric", "GT", null, "3", 1);
-
- verifyCondition(result, ratingMetricDto.getId(), "GT", null, "3", 1);
- }
-
@Test
public void fail_to_create_condition_when_condition_on_same_metric_already_exist() throws Exception {
dbClient.gateConditionDao().insert(new QualityGateConditionDto()
underTest.createCondition(dbSession, qualityGateDto.getId(), "coverage", "EQ", null, "90", 6);
}
+ @Test
+ public void create_condition_on_rating_metric() {
+ QualityGateConditionDto result = underTest.createCondition(dbSession, qualityGateDto.getId(), "rating_metric", "GT", null, "3", null);
+
+ verifyCondition(result, ratingMetricDto.getId(), "GT", null, "3", null);
+ }
+
+ @Test
+ public void fail_to_create_condition_on_rating_metric_on_leak_period() {
+ expectedException.expect(BadRequestException.class);
+ expectedException.expectMessage("The metric 'Rating' cannot be used on the leak period");
+ underTest.createCondition(dbSession, qualityGateDto.getId(), "rating_metric", "GT", null, "3", 1);
+ }
+
@Test
public void fail_to_create_warning_condition_on_invalid_rating_metric() {
expectedException.expect(BadRequestException.class);
public void update_condition_on_rating_metric() {
QualityGateConditionDto condition = insertCondition(ratingMetricDto.getId(), "LT", null, "3", null);
- QualityGateConditionDto result = underTest.updateCondition(dbSession, condition.getId(), "rating_metric", "GT", "4", null, 1);
+ QualityGateConditionDto result = underTest.updateCondition(dbSession, condition.getId(), "rating_metric", "GT", "4", null, null);
+
+ verifyCondition(result, ratingMetricDto.getId(), "GT", "4", null, null);
+ }
- verifyCondition(result, ratingMetricDto.getId(), "GT", "4", null, 1);
+ @Test
+ public void fail_to_update_condition_on_rating_metric_on_leak_period() {
+ QualityGateConditionDto condition = insertCondition(ratingMetricDto.getId(), "LT", null, "3", null);
+
+ expectedException.expect(BadRequestException.class);
+ expectedException.expectMessage("The metric 'Rating' cannot be used on the leak period");
+ underTest.updateCondition(dbSession, condition.getId(), "rating_metric", "GT", "4", null, 1);
}
@Test