@Test public void register_rules_at_startup() throws Exception { verifyRulesInDb(); Result<Rule> searchResult = index.search(new RuleQuery(), new QueryOptions()); assertThat(searchResult.getTotal()).isEqualTo(3); assertThat(searchResult.getHits()).hasSize(3); Rule rule = index.getByKey(RuleTesting.XOO_X1); assertThat(rule.severity()).isEqualTo(Severity.MINOR); assertThat(rule.name()).isEqualTo("x1 name"); assertThat(rule.htmlDescription()).isEqualTo("x1 desc"); assertThat(rule.systemTags()).contains("tag1"); assertThat(rule.params()).hasSize(1); assertThat(rule.param("acceptWhitespace").type()).isEqualTo(RuleParamType.BOOLEAN); assertThat(rule.param("acceptWhitespace").defaultValue()).isEqualTo("false"); assertThat(rule.param("acceptWhitespace").description()) .isEqualTo("Accept whitespaces on the line"); assertThat(rule.debtSubCharacteristicKey()) .isEqualTo(RulesDefinition.SubCharacteristics.INTEGRATION_TESTABILITY); assertThat(rule.debtRemediationFunction().type()) .isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET); assertThat(rule.debtRemediationFunction().coefficient()).isEqualTo("1h"); assertThat(rule.debtRemediationFunction().offset()).isEqualTo("30min"); assertThat(rule.effortToFixDescription()).isEqualTo("x1 effort to fix"); }
@Test public void update_manual_rule() { // Create manual rule RuleDto manualRule = RuleTesting.newManualRule("My manual") .setName("Old name") .setDescription("Old description") .setSeverity(Severity.INFO); ruleDao.insert(dbSession, manualRule); dbSession.commit(); // Update manual rule RuleUpdate update = RuleUpdate.createForManualRule(manualRule.getKey()) .setName("New name") .setMarkdownDescription("New description") .setSeverity(Severity.CRITICAL); updater.update(update, userSessionRule); dbSession.clearCache(); // Verify manual rule is updated Rule manualRuleReloaded = ruleIndex.getByKey(manualRule.getKey()); assertThat(manualRuleReloaded).isNotNull(); assertThat(manualRuleReloaded.name()).isEqualTo("New name"); assertThat(manualRuleReloaded.htmlDescription()).isEqualTo("New description"); assertThat(manualRuleReloaded.severity()).isEqualTo(Severity.CRITICAL); }
@Test public void update_rule() { verifyRulesInDb(); // The plugin X1 will be updated rulesDefinition.includeX1 = false; rulesDefinition.includeX1bis = true; tester.get(Platform.class).executeStartupTasks(); Rule rule = index.getByKey(RuleTesting.XOO_X1); assertThat(rule.severity()).isEqualTo(Severity.INFO); assertThat(rule.name()).isEqualTo("x1 name updated"); assertThat(rule.htmlDescription()).isEqualTo("x1 desc updated"); assertThat(rule.systemTags()).contains("tag1", "tag2"); assertThat(rule.params()).hasSize(2); assertThat(rule.param("acceptWhitespace").type()).isEqualTo(RuleParamType.BOOLEAN); assertThat(rule.param("acceptWhitespace").defaultValue()).isEqualTo("true"); assertThat(rule.param("acceptWhitespace").description()) .isEqualTo("Accept whitespaces on the line updated"); // New parameter assertThat(rule.param("format").type()).isEqualTo(RuleParamType.TEXT); assertThat(rule.param("format").defaultValue()).isEqualTo("txt"); assertThat(rule.param("format").description()).isEqualTo("Format"); assertThat(rule.debtSubCharacteristicKey()) .isEqualTo(RulesDefinition.SubCharacteristics.INSTRUCTION_RELIABILITY); assertThat(rule.debtRemediationFunction().type()) .isEqualTo(DebtRemediationFunction.Type.LINEAR); assertThat(rule.debtRemediationFunction().coefficient()).isEqualTo("2h"); assertThat(rule.debtRemediationFunction().offset()).isNull(); assertThat(rule.effortToFixDescription()).isEqualTo("x1 effort to fix updated"); }
@Test public void update_custom_rule() { // Create template rule RuleDto templateRule = RuleTesting.newTemplateRule(RuleKey.of("java", "S001")); ruleDao.insert(dbSession, templateRule); RuleParamDto templateRuleParam1 = RuleParamDto.createFor(templateRule) .setName("regex") .setType("STRING") .setDescription("Reg ex") .setDefaultValue(".*"); RuleParamDto templateRuleParam2 = RuleParamDto.createFor(templateRule) .setName("format") .setType("STRING") .setDescription("Format"); ruleDao.insertRuleParam(dbSession, templateRule, templateRuleParam1); ruleDao.insertRuleParam(dbSession, templateRule, templateRuleParam2); // Create custom rule RuleDto customRule = RuleTesting.newCustomRule(templateRule) .setName("Old name") .setDescription("Old description") .setSeverity(Severity.MINOR) .setStatus(RuleStatus.BETA); ruleDao.insert(dbSession, customRule); ruleDao.insertRuleParam(dbSession, customRule, templateRuleParam1.setDefaultValue("a.*")); ruleDao.insertRuleParam(dbSession, customRule, templateRuleParam2.setDefaultValue(null)); dbSession.commit(); // Update custom rule RuleUpdate update = RuleUpdate.createForCustomRule(customRule.getKey()) .setName("New name") .setMarkdownDescription("New description") .setSeverity("MAJOR") .setStatus(RuleStatus.READY) .setParameters(ImmutableMap.of("regex", "b.*")); updater.update(update, userSessionRule); dbSession.clearCache(); // Verify custom rule is updated Rule customRuleReloaded = ruleIndex.getByKey(customRule.getKey()); assertThat(customRuleReloaded).isNotNull(); assertThat(customRuleReloaded.name()).isEqualTo("New name"); assertThat(customRuleReloaded.htmlDescription()).isEqualTo("New description"); assertThat(customRuleReloaded.severity()).isEqualTo("MAJOR"); assertThat(customRuleReloaded.status()).isEqualTo(RuleStatus.READY); assertThat(customRuleReloaded.params()).hasSize(2); assertThat(customRuleReloaded.params().get(0).defaultValue()).isEqualTo("b.*"); assertThat(customRuleReloaded.params().get(1).defaultValue()).isNull(); }