From: Stephane Gamard Date: Tue, 13 May 2014 12:21:50 +0000 (+0200) Subject: Added active-rule test to WSMediumTest X-Git-Tag: 4.4-RC1~1104 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=6ea988559da9f63cab05c26d25c3fe3af4506865;p=sonarqube.git Added active-rule test to WSMediumTest --- diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/index/ActiveRuleDoc.java b/sonar-server/src/main/java/org/sonar/server/rule2/index/ActiveRuleDoc.java index a46c893750f..d07f258d1e8 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/index/ActiveRuleDoc.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/index/ActiveRuleDoc.java @@ -58,9 +58,11 @@ public class ActiveRuleDoc implements ActiveRule { @Override public Map params() { Map params = new HashMap(); - Map> allParams = (Map>) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.PARAMS); - for(Map.Entry> param:allParams.entrySet()){ - params.put(param.getKey(), param.getValue().get(ActiveRuleNormalizer.ActiveRuleParamField.VALUE.key())); + if (this.fields.containsKey(ActiveRuleNormalizer.ActiveRuleField.PARAMS)) { + Map> allParams = (Map>) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.PARAMS); + for (Map.Entry> param : allParams.entrySet()) { + params.put(param.getKey(), param.getValue().get(ActiveRuleNormalizer.ActiveRuleParamField.VALUE.key())); + } } return params; } diff --git a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java index 814e79fc58a..732611bcda2 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java @@ -19,6 +19,7 @@ */ package org.sonar.server.rule2.ws; +import org.junit.After; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; @@ -29,8 +30,12 @@ import org.sonar.api.server.ws.WebService; import org.sonar.check.Cardinality; import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.MyBatis; +import org.sonar.core.qualityprofile.db.ActiveRuleDto; +import org.sonar.core.qualityprofile.db.QualityProfileDao; +import org.sonar.core.qualityprofile.db.QualityProfileDto; import org.sonar.core.rule.RuleDto; import org.sonar.server.rule2.RuleService; +import org.sonar.server.rule2.persistence.ActiveRuleDao; import org.sonar.server.rule2.persistence.RuleDao; import org.sonar.server.tester.ServerTester; import org.sonar.server.user.MockUserSession; @@ -46,15 +51,22 @@ public class RulesWebServiceTest { private RulesWebService ws; private RuleDao ruleDao; + private DbSession session; WsTester wsTester; + @Before public void setUp() throws Exception { ruleDao = tester.get(RuleDao.class); ws = tester.get(RulesWebService.class); wsTester = new WsTester(ws); + session = tester.get(MyBatis.class).openSession(false); + } + @After + public void after(){ + session.close(); } @Test @@ -81,16 +93,15 @@ public class RulesWebServiceTest { System.out.println("request.toString() = " + request.toString()); WsTester.Result result = request.execute(); - assertThat(result.outputAsString()).isEqualTo("{\"total\":0,\"rules\":[],\"activeRules\":[]}"); + assertThat(result.outputAsString()).isEqualTo("{\"total\":0,\"rules\":[]}"); } @Test public void search_2_rules() throws Exception { - DbSession session = tester.get(MyBatis.class).openSession(false); ruleDao.insert(newRuleDto(RuleKey.of("javascript", "S001")), session); ruleDao.insert(newRuleDto(RuleKey.of("javascript", "S002")), session); session.commit(); - session.close(); + tester.get(RuleService.class).refresh(); MockUserSession.set(); @@ -99,6 +110,35 @@ public class RulesWebServiceTest { //TODO } + @Test + public void search_active_rules() throws Exception { + QualityProfileDto profile = newQualityProfile(); + tester.get(QualityProfileDao.class).insert(profile, session); + + RuleDto rule = newRuleDto(RuleKey.of(profile.getLanguage(), "S001")); + ruleDao.insert(rule, session); + + ActiveRuleDto activeRule = newActiveRule(profile, rule); + tester.get(ActiveRuleDao.class).insert(activeRule, session); + + session.commit(); + tester.get(RuleService.class).refresh(); + + + MockUserSession.set(); + WsTester.TestRequest request = wsTester.newGetRequest("api/rules2", "search"); + WsTester.Result result = request.execute(); + +// System.out.println("result = " + result.outputAsString()); + + } + + + private QualityProfileDto newQualityProfile() { + return new QualityProfileDto() + .setLanguage("java") + .setName("My Profile"); + } private RuleDto newRuleDto(RuleKey ruleKey) { return new RuleDto() @@ -119,6 +159,10 @@ public class RulesWebServiceTest { .setDefaultRemediationOffset("10h") .setEffortToFixDescription(ruleKey.repository() + "." + ruleKey.rule() + ".effortToFix"); } -} - + private ActiveRuleDto newActiveRule(QualityProfileDto profile, RuleDto rule) { + return ActiveRuleDto.createFor(profile, rule) + .setInheritance("none") + .setSeverity("BLOCKER"); + } +} \ No newline at end of file