]> source.dussan.org Git - sonarqube.git/commitdiff
Added active-rule test to WSMediumTest
authorStephane Gamard <stephane.gamard@searchbox.com>
Tue, 13 May 2014 12:21:50 +0000 (14:21 +0200)
committerStephane Gamard <stephane.gamard@searchbox.com>
Tue, 13 May 2014 12:21:50 +0000 (14:21 +0200)
sonar-server/src/main/java/org/sonar/server/rule2/index/ActiveRuleDoc.java
sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java

index a46c893750f9fc47aff5ab4cf6d119cceb46e420..d07f258d1e89afb901702903a8170362b0857056 100644 (file)
@@ -58,9 +58,11 @@ public class ActiveRuleDoc implements ActiveRule {
   @Override
   public Map<String, String> params() {
     Map<String, String> params = new HashMap<String, String>();
-    Map<String, Map<String,String>> allParams = (Map<String, Map<String, String>>) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.PARAMS);
-    for(Map.Entry<String, Map<String,String>> param:allParams.entrySet()){
-      params.put(param.getKey(), param.getValue().get(ActiveRuleNormalizer.ActiveRuleParamField.VALUE.key()));
+    if (this.fields.containsKey(ActiveRuleNormalizer.ActiveRuleField.PARAMS)) {
+      Map<String, Map<String, String>> allParams = (Map<String, Map<String, String>>) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.PARAMS);
+      for (Map.Entry<String, Map<String, String>> param : allParams.entrySet()) {
+        params.put(param.getKey(), param.getValue().get(ActiveRuleNormalizer.ActiveRuleParamField.VALUE.key()));
+      }
     }
     return params;
   }
index 814e79fc58ae64ddbc5e2060752c90de156c6ca9..732611bcda221ebda30fa9508dac8876805364e4 100644 (file)
@@ -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