@Test public void show_rule_with_default_debt_infos() { RuleDefinitionDto rule = db.rules().insert(r -> r .setDefRemediationFunction("LINEAR_OFFSET") .setDefRemediationGapMultiplier("5d") .setDefRemediationBaseEffort("10h") .setGapDescription("gap desc")); ShowResponse result = ws.newRequest() .setParam(PARAM_KEY, rule.getKey().toString()) .executeProtobuf(ShowResponse.class); Rule resultRule = result.getRule(); assertThat(resultRule.getDefaultRemFnType()).isEqualTo("LINEAR_OFFSET"); assertThat(resultRule.getDefaultRemFnGapMultiplier()).isEqualTo("5d"); assertThat(resultRule.getDefaultRemFnBaseEffort()).isEqualTo("10h"); assertThat(resultRule.getGapDescription()).isEqualTo("gap desc"); assertThat(resultRule.getRemFnType()).isEqualTo("LINEAR_OFFSET"); assertThat(resultRule.getRemFnGapMultiplier()).isEqualTo("5d"); assertThat(resultRule.getRemFnBaseEffort()).isEqualTo("10h"); assertThat(resultRule.getRemFnOverloaded()).isFalse(); }
@Test public void search_debt_rules_with_default_and_overridden_debt_values() { RuleDefinitionDto rule = db.rules().insert(r -> r.setLanguage("java") .setDefRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.name()) .setDefRemediationGapMultiplier("1h") .setDefRemediationBaseEffort("15min")); RuleMetadataDto metadata = insertMetadata(db.getDefaultOrganization(), rule, r -> r.setRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.name()) .setRemediationGapMultiplier("2h") .setRemediationBaseEffort("25min")); indexRules(); SearchResponse result = ws.newRequest() .setParam("f", "debtRemFn,debtOverloaded,defaultDebtRemFn") .executeProtobuf(SearchResponse.class); assertThat(result.getTotal()).isEqualTo(1); assertThat(result.getRulesCount()).isEqualTo(1); Rule searchedRule = result.getRules(0); assertThat(searchedRule).isNotNull(); assertThat(searchedRule.getDefaultDebtRemFnCoeff()).isEqualTo("1h"); assertThat(searchedRule.getDefaultDebtRemFnOffset()).isEqualTo("15min"); assertThat(searchedRule.getDefaultDebtRemFnType()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET.name()); assertThat(searchedRule.getDefaultRemFnBaseEffort()).isEqualTo("15min"); assertThat(searchedRule.getDefaultRemFnGapMultiplier()).isEqualTo("1h"); assertThat(searchedRule.getDefaultRemFnType()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET.name()); assertThat(searchedRule.getDebtOverloaded()).isTrue(); assertThat(searchedRule.getDebtRemFnCoeff()).isEqualTo("2h"); assertThat(searchedRule.getDebtRemFnOffset()).isEqualTo("25min"); assertThat(searchedRule.getDebtRemFnType()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET.name()); }
@Test public void search_debt_rules_with_default_linear_offset_and_overridden_linear_debt() { RuleDefinitionDto rule = db.rules().insert(r -> r.setLanguage("java") .setDefRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.name()) .setDefRemediationGapMultiplier("1h") .setDefRemediationBaseEffort("15min")); RuleMetadataDto metadata = insertMetadata(db.getDefaultOrganization(), rule, r -> r.setRemediationFunction(DebtRemediationFunction.Type.LINEAR.name()) .setRemediationGapMultiplier("1h") .setRemediationBaseEffort(null)); indexRules(); SearchResponse result = ws.newRequest() .setParam("f", "debtRemFn,debtOverloaded,defaultDebtRemFn") .executeProtobuf(SearchResponse.class); assertThat(result.getTotal()).isEqualTo(1); assertThat(result.getRulesCount()).isEqualTo(1); Rule searchedRule = result.getRules(0); assertThat(searchedRule).isNotNull(); assertThat(searchedRule.getDefaultDebtRemFnCoeff()).isEqualTo("1h"); assertThat(searchedRule.getDefaultDebtRemFnOffset()).isEqualTo("15min"); assertThat(searchedRule.getDefaultDebtRemFnType()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET.name()); assertThat(searchedRule.getDefaultRemFnBaseEffort()).isEqualTo("15min"); assertThat(searchedRule.getDefaultRemFnGapMultiplier()).isEqualTo("1h"); assertThat(searchedRule.getDefaultRemFnType()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET.name()); assertThat(searchedRule.getDebtOverloaded()).isTrue(); assertThat(searchedRule.getDebtRemFnCoeff()).isEqualTo("1h"); assertThat(searchedRule.getDebtRemFnOffset()).isEmpty(); assertThat(searchedRule.getDebtRemFnType()).isEqualTo(DebtRemediationFunction.Type.LINEAR.name()); }
assertThat(updatedRule.getDefaultRemFnType()).isEqualTo(rule.getDefRemediationFunction()); assertThat(updatedRule.getDefaultRemFnGapMultiplier()).isEqualTo(rule.getDefRemediationGapMultiplier()); assertThat(updatedRule.getDefaultRemFnBaseEffort()).isEqualTo("");
assertThat(updatedRule.getDefaultRemFnType()).isEqualTo(rule.getDefRemediationFunction()); assertThat(updatedRule.getDefaultRemFnGapMultiplier()).isEqualTo(rule.getDefRemediationGapMultiplier()); assertThat(updatedRule.getDefaultRemFnBaseEffort()).isEqualTo(rule.getDefRemediationBaseEffort());
@Test public void search_debt_rules_with_default_linear_offset_and_overridden_constant_debt() { RuleDefinitionDto rule = db.rules().insert(r -> r.setLanguage("java") .setDefRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.name()) .setDefRemediationGapMultiplier("1h") .setDefRemediationBaseEffort("15min")); RuleMetadataDto metadata = insertMetadata(db.getDefaultOrganization(), rule, r -> r.setRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE.name()) .setRemediationGapMultiplier(null) .setRemediationBaseEffort("5min")); indexRules(); SearchResponse result = ws.newRequest() .setParam("f", "debtRemFn,debtOverloaded,defaultDebtRemFn") .executeProtobuf(SearchResponse.class); assertThat(result.getTotal()).isEqualTo(1); assertThat(result.getRulesCount()).isEqualTo(1); Rule searchedRule = result.getRules(0); assertThat(searchedRule).isNotNull(); assertThat(searchedRule.getDefaultDebtRemFnCoeff()).isEqualTo("1h"); assertThat(searchedRule.getDefaultDebtRemFnOffset()).isEqualTo("15min"); assertThat(searchedRule.getDefaultDebtRemFnType()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET.name()); assertThat(searchedRule.getDefaultRemFnBaseEffort()).isEqualTo("15min"); assertThat(searchedRule.getDefaultRemFnGapMultiplier()).isEqualTo("1h"); assertThat(searchedRule.getDefaultRemFnType()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET.name()); assertThat(searchedRule.getDebtOverloaded()).isTrue(); assertThat(searchedRule.getDebtRemFnCoeff()).isEmpty(); assertThat(searchedRule.getDebtRemFnOffset()).isEqualTo("5min"); assertThat(searchedRule.getDebtRemFnType()).isEqualTo(DebtRemediationFunction.Type.CONSTANT_ISSUE.name()); }
@Test public void show_deprecated_rule_debt_fields() { RuleDefinitionDto rule = db.rules().insert(r -> r .setDefRemediationFunction("LINEAR_OFFSET") .setDefRemediationGapMultiplier("5d") .setDefRemediationBaseEffort("10h") .setGapDescription("gap desc")); db.rules().insertOrUpdateMetadata(rule, db.getDefaultOrganization(), m -> m.setNoteData(null).setNoteUserUuid(null), m -> m .setRemediationFunction("CONSTANT_ISSUE") .setRemediationGapMultiplier(null) .setRemediationBaseEffort("15h")); ShowResponse result = ws.newRequest() .setParam(PARAM_KEY, rule.getKey().toString()) .executeProtobuf(ShowResponse.class); Rule resultRule = result.getRule(); assertThat(resultRule.getDefaultRemFnType()).isEqualTo("LINEAR_OFFSET"); assertThat(resultRule.getDefaultDebtRemFnCoeff()).isEqualTo("5d"); assertThat(resultRule.getDefaultDebtRemFnOffset()).isEqualTo("10h"); assertThat(resultRule.getEffortToFixDescription()).isEqualTo("gap desc"); assertThat(resultRule.getDebtRemFnType()).isEqualTo("CONSTANT_ISSUE"); assertThat(resultRule.hasDebtRemFnCoeff()).isFalse(); assertThat(resultRule.getDebtRemFnOffset()).isEqualTo("15h"); assertThat(resultRule.getDebtOverloaded()).isTrue(); }
@Test public void show_rule_with_default_and_overridden_debt_infos() { RuleDefinitionDto rule = db.rules().insert(r -> r .setDefRemediationFunction("LINEAR_OFFSET") .setDefRemediationGapMultiplier("5d") .setDefRemediationBaseEffort("10h")); db.rules().insertOrUpdateMetadata(rule, db.getDefaultOrganization(), m -> m.setNoteData(null).setNoteUserUuid(null), m -> m .setRemediationFunction("CONSTANT_ISSUE") .setRemediationGapMultiplier(null) .setRemediationBaseEffort("15h")); ShowResponse result = ws.newRequest() .setParam(PARAM_KEY, rule.getKey().toString()) .executeProtobuf(ShowResponse.class); Rule resultRule = result.getRule(); assertThat(resultRule.getDefaultRemFnType()).isEqualTo("LINEAR_OFFSET"); assertThat(resultRule.getDefaultRemFnType()).isEqualTo("LINEAR_OFFSET"); assertThat(resultRule.getDefaultRemFnGapMultiplier()).isEqualTo("5d"); assertThat(resultRule.getDefaultRemFnBaseEffort()).isEqualTo("10h"); assertThat(resultRule.getRemFnType()).isEqualTo("CONSTANT_ISSUE"); assertThat(resultRule.hasRemFnGapMultiplier()).isFalse(); assertThat(resultRule.getRemFnBaseEffort()).isEqualTo("15h"); assertThat(resultRule.getRemFnOverloaded()).isTrue(); }