]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-SONAR-5237 - Fixed Rule Search Medium WS
authorStephane Gamard <stephane.gamard@searchbox.com>
Fri, 23 May 2014 07:20:48 +0000 (09:20 +0200)
committerStephane Gamard <stephane.gamard@searchbox.com>
Fri, 23 May 2014 07:21:12 +0000 (09:21 +0200)
13 files changed:
sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java
sonar-server/src/test/java/org/sonar/server/rule2/ws/RulesWebServiceTest.java
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/filter_by_tags.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_note_as_markdown_and_html.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/get_tags.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_2_rules.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_active_rules_params.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_debt_rule.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_no_rules.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/search_profile_active_rules.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_active.json
sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_no_active.json [new file with mode: 0644]

index e39e2fe8c4959bc92d2f85cafe336a88063a27e5..3b4a1267ed1af01c90cd99d8e86c7cd60c6e84c1 100644 (file)
@@ -321,18 +321,7 @@ public class RuleIndex extends BaseIndex<Rule, RuleDto, RuleKey> {
       }
     }
 
-    if ((query.getLanguages() != null && !query.getLanguages().isEmpty()) ||
-      (query.getRepositories() != null && !query.getRepositories().isEmpty()) ||
-      (query.getSeverities() != null && !query.getSeverities().isEmpty()) ||
-      (query.getTags() != null && !query.getTags().isEmpty()) ||
-      (query.getStatuses() != null && !query.getStatuses().isEmpty()) ||
-      (query.getKey() != null && !query.getKey().isEmpty()) ||
-      (query.getDebtCharacteristics() != null && !query.getDebtCharacteristics().isEmpty()) ||
-      (query.getActivation() != null)) {
-      return fb;
-    } else {
-      return FilterBuilders.matchAllFilter();
-    }
+    return fb.hasClauses() ? fb : FilterBuilders.matchAllFilter();
   }
 
   protected void setFacets(SearchRequestBuilder query) {
index 1b3558822a4a36fe91904c33d5cabe410496be18..42752fa53c4768992f965e9248e433810fa62df0 100644 (file)
@@ -23,7 +23,6 @@ import com.google.common.collect.ImmutableSet;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.sonar.api.rule.RuleKey;
 import org.sonar.api.rule.RuleStatus;
@@ -41,14 +40,13 @@ import org.sonar.core.rule.RuleDto;
 import org.sonar.core.rule.RuleParamDto;
 import org.sonar.server.qualityprofile.persistence.ActiveRuleDao;
 import org.sonar.server.rule2.persistence.RuleDao;
+import org.sonar.server.search.ws.SearchOptions;
 import org.sonar.server.tester.ServerTester;
 import org.sonar.server.user.MockUserSession;
 import org.sonar.server.ws.WsTester;
 
 import static org.fest.assertions.Assertions.assertThat;
 
-@Ignore
-//TODO FIx BaseDoc for unknown fields in Mapper
 public class RulesWebServiceTest {
 
   @ClassRule
@@ -110,12 +108,18 @@ public class RulesWebServiceTest {
 
     MockUserSession.set();
 
-    // 1. Default Activation
+    // 1. With Activation
     WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "show");
-    request.setParam("key", rule.getKey().toString());
+    request.setParam(ShowAction.PARAM_KEY, rule.getKey().toString());
+    request.setParam(ShowAction.PARAM_ACTIVES, "true");
     WsTester.Result result = request.execute();
+    result.assertJson(this.getClass(), "show_rule_active.json", false);
 
-    result.assertJson(this.getClass(), "show_rule_active.json");
+    // 1. Default Activation (defaults to false)
+    request = wsTester.newGetRequest("api/rules", "show");
+    request.setParam(ShowAction.PARAM_KEY, rule.getKey().toString());
+    result = request.execute();
+    result.assertJson(this.getClass(), "show_rule_no_active.json", false);
   }
 
 
@@ -156,8 +160,8 @@ public class RulesWebServiceTest {
 
     MockUserSession.set();
     WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search");
+    request.setParam(SearchOptions.PARAM_FIELDS, "debtRemFn,debtChar");
     WsTester.Result result = request.execute();
-
     result.assertJson(this.getClass(), "search_debt_rule.json");
   }
 
@@ -178,8 +182,9 @@ public class RulesWebServiceTest {
 
     MockUserSession.set();
     WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search");
-    request.setParam("q", "S001");
-    request.setParam("activation", "all");
+    request.setParam(SearchOptions.PARAM_TEXT_QUERY, "S001");
+    request.setParam(SearchAction.PARAM_ACTIVATION, "true");
+    request.setParam(SearchOptions.PARAM_FIELDS, "");
     WsTester.Result result = request.execute();
 
     result.assertJson(this.getClass(), "search_active_rules.json");
@@ -209,11 +214,11 @@ public class RulesWebServiceTest {
 
     MockUserSession.set();
     WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search");
-    request.setParam("q", "S001");
-    request.setParam("activation", "true");
-    request.setParam("qprofile", profile2.getKey().toString());
+    request.setParam(SearchOptions.PARAM_TEXT_QUERY, "S001");
+    request.setParam(SearchAction.PARAM_ACTIVATION, "true");
+    request.setParam(SearchAction.PARAM_QPROFILE, profile2.getKey().toString());
+    request.setParam(SearchOptions.PARAM_FIELDS, "");
     WsTester.Result result = request.execute();
-
     result.assertJson(this.getClass(), "search_profile_active_rules.json");
   }
 
@@ -256,9 +261,9 @@ public class RulesWebServiceTest {
 
     MockUserSession.set();
     WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search");
-    request.setParam("q", "S001");
-    request.setParam("activation", "all");
-
+    request.setParam(SearchOptions.PARAM_TEXT_QUERY, "S001");
+    request.setParam(SearchAction.PARAM_ACTIVATION, "true");
+    request.setParam(SearchOptions.PARAM_FIELDS, "params");
     WsTester.Result result = request.execute();
 
     result.assertJson(this.getClass(), "search_active_rules_params.json", false);
@@ -302,8 +307,8 @@ public class RulesWebServiceTest {
 
     MockUserSession.set();
     WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search");
+    request.setParam(SearchOptions.PARAM_FIELDS, "htmlNote, mdNote");
     WsTester.Result result = request.execute();
-
     result.assertJson(this.getClass(), "get_note_as_markdown_and_html.json");
   }
 
@@ -319,7 +324,8 @@ public class RulesWebServiceTest {
 
     MockUserSession.set();
     WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "search");
-    request.setParam("tags", "tag1");
+    request.setParam(SearchAction.PARAM_TAGS, "tag1");
+    request.setParam(SearchOptions.PARAM_FIELDS, "sysTags, tags");
     WsTester.Result result = request.execute();
     result.assertJson(this.getClass(), "filter_by_tags.json");
   }
index 3fe2e34364824f1c6cc611ecc30fe9fef9a82e84..7c70cd1351b7b143c95897f2885eae98417aa0af 100644 (file)
@@ -1,19 +1,7 @@
-{"total": 1, "p": 1, "ps": 25, "rules": [
-    {
-        "key": "java:S001",
-        "repo": "java",
-        "name": "Rule S001",
-        "htmlDesc": "Description S001",
-        "severity": "INFO",
-        "status": "READY",
-        "internalKey": "InternalKeyS001",
-        "template": false,
-        "tags": [],
-        "sysTags": ["tag1"],
-        "debtRemFnType": "LINEAR",
-        "debtRemFnCoeff": "1h",
-        "debtRemFnOffset": "5min",
-        "lang": "js",
-        "params": []
-    }
-], "actives": {}}
+{"total": 1, "p": 1, "ps": 10, "rules": [
+  {
+    "key": "java:S001",
+    "sysTags": ["tag1"],
+    "tags": []
+  }
+]}
\ No newline at end of file
index ea1df5579a35adb7d55ccd0eab28bf0757a27b5b..76f3cbb9f53210cb3d03bc364e22e04ba6c23455 100644 (file)
@@ -1,21 +1,7 @@
-{"total": 1, "p": 1, "ps": 25, "rules": [
+{"total": 1, "p": 1, "ps": 10, "rules": [
   {
     "key": "java:S001",
-    "repo": "java",
-    "name": "Rule S001",
-    "lang": "js",
-    "htmlDesc": "Description S001",
-    "status": "READY",
-    "severity": "INFO",
-    "template": false,
-    "internalKey": "InternalKeyS001",
-    "mdNote": "this is *bold*",
     "htmlNote": "this is <em>bold</em>",
-    "tags": [],
-    "sysTags": [],
-    "debtRemFnType": "LINEAR",
-    "debtRemFnCoeff": "1h",
-    "debtRemFnOffset": "5min",
-    "params": []
+    "mdNote": "this is *bold*"
   }
-], "actives": {}}
+]}
\ No newline at end of file
index 2f23ecfb2b7d4e752d2b17b6839d76b19629630a..14764b48180a2f9e88dd5b14df3519d2e96eb82e 100644 (file)
@@ -1 +1 @@
-{"tags":["hello","sys1","java","world"]}
\ No newline at end of file
+{"tags": ["hello", "sys1", "java", "world"]}
\ No newline at end of file
index 0f18abaeb47f28d197b5abc1ff5e170dec06624b..ea0909a52d96919012f713358a69b3733ee1acd2 100644 (file)
@@ -1,4 +1,4 @@
-{"total": 2, "p": 1, "ps": 25, "rules": [
+{"total": 2, "p": 1, "ps": 10, "rules": [
   {
     "key": "javascript:S002",
     "repo": "javascript",
index 68cfa284c661a045d4ec9d84714ac9e1cd18c376..09c87c6cc5a78db80899a0598a8d616df31430e7 100644 (file)
@@ -1,28 +1,5 @@
-{"total": 1, "p": 1, "ps": 25, "rules": [
+{"total": 1, "p": 1, "ps": 10, "rules": [
   {
-    "key": "java:S001",
-    "repo": "java",
-    "name": "Rule S001",
-    "lang": "js",
-    "htmlDesc": "Description S001",
-    "status": "READY",
-    "severity": "INFO",
-    "template": false,
-    "internalKey": "InternalKeyS001",
-    "tags": [],
-    "sysTags": [],
-    "debtRemFnType": "LINEAR",
-    "debtRemFnCoeff": "1h",
-    "debtRemFnOffset": "5min",
-    "params": []
+    "key": "java:S001"
   }
-], "actives": {
-  "java:S001": [
-    {
-      "qProfile": "My Profile:java",
-      "inherit": "NONE",
-      "severity": "BLOCKER",
-      "params": []
-    }
-  ]
-}}
+]}
index fc30d831d0646be87ad9630bcc4150c2d4327c56..ba129e8c998eec6cab8026b6ad0b5a29da10cdbf 100644 (file)
@@ -1,19 +1,6 @@
-{"total": 1, "p": 1, "ps": 25, "rules": [
+{"total": 1, "p": 1, "ps": 10, "rules": [
   {
     "key": "java:S001",
-    "repo": "java",
-    "name": "Rule S001",
-    "lang": "js",
-    "htmlDesc": "Description S001",
-    "status": "READY",
-    "severity": "INFO",
-    "template": false,
-    "internalKey": "InternalKeyS001",
-    "tags": [],
-    "sysTags": [],
-    "debtRemFnType": "LINEAR",
-    "debtRemFnCoeff": "1h",
-    "debtRemFnOffset": "5min",
     "params": [
       {
         "key": "my_var",
       }
     ]
   }
-], "actives": {
-  "java:S001": [
-    {
-      "qProfile": "My Profile:java",
-      "inherit": "NONE",
-      "severity": "BLOCKER",
-      "params": [
-        {
-          "key": "the_var",
-          "value": "The Other Value"
-        },
-        {
-          "key": "my_var",
-          "value": "The VALUE"
-        }
-      ]
-    }
-  ]
-}}
+]
+}
index 30da25759e3905fc2ff74b98134576824380aeff..65442c32bc48994df3b38a53900be1ad505deac8 100644 (file)
@@ -1,20 +1,8 @@
-{"total": 1, "p": 1, "ps": 25, "rules": [
+{"total": 1, "p": 1, "ps": 10, "rules": [
   {
     "key": "javascript:S001",
-    "repo": "javascript",
-    "name": "Rule S001",
-    "lang": "js",
-    "htmlDesc": "Description S001",
-    "status": "READY",
-    "severity": "INFO",
-    "template": false,
-    "internalKey": "InternalKeyS001",
-    "tags": [],
-    "sysTags": [],
-    "debtSubChar": "1",
     "debtRemFnType": "LINEAR",
     "debtRemFnCoeff": "1h",
-    "debtRemFnOffset": "5min",
-    "params": []
+    "debtRemFnOffset": "5min"
   }
-], "actives": {}}
+]}
index 9aed43752706523b8e03babd9b79a7b763faa26a..d07bd5729f1e488c18ac80e2bbce62da027b458a 100644 (file)
@@ -1,7 +1,7 @@
 {
     "total": 0,
     "p": 1,
-    "ps": 25,
+    "ps": 10,
     "rules": [],
     "actives": {}
 }
index b91bcb245d2717230c181c14828f5db881b77554..aa8d5598533b103fd37bb76e78911c8398aa485d 100644 (file)
@@ -1,34 +1,10 @@
 {
   "total": 1,
   "p": 1,
-  "ps": 25,
+  "ps": 10,
   "rules": [
     {
-      "key": "java:S001",
-      "repo": "java",
-      "name": "Rule S001",
-      "lang": "js",
-      "htmlDesc": "Description S001",
-      "status": "READY",
-      "severity": "INFO",
-      "template": false,
-      "internalKey": "InternalKeyS001",
-      "tags": [],
-      "sysTags": [],
-      "debtRemFnType": "LINEAR",
-      "debtRemFnCoeff": "1h",
-      "debtRemFnOffset": "5min",
-      "params": []
+      "key": "java:S001"
     }
-  ],
-  "actives": {
-    "java:S001": [
-      {
-        "qProfile": "p2:java",
-        "inherit": "NONE",
-        "severity": "BLOCKER",
-        "params": []
-      }
-    ]
-  }
+  ]
 }
index 0bc30fb7f6b08a2c23453694dab5895d0095066b..97e4c23b920adcf1ea9e11e6b14e1ccae06c4de9 100644 (file)
@@ -1,27 +1,27 @@
 {
-    "actives": [
-        {
-            "inherit": "NONE",
-            "params": [],
-            "qProfile": "My Profile:java",
-            "severity": "BLOCKER"
-        }
-    ],
-    "rule": {
-        "debtRemFnCoeff": "1h",
-        "debtRemFnOffset": "5min",
-        "debtRemFnType": "LINEAR",
-        "htmlDesc": "Description S001",
-        "internalKey": "InternalKeyS001",
-        "key": "java:S001",
-        "lang": "js",
-        "name": "Rule S001",
-        "params": [],
-        "repo": "java",
-        "severity": "INFO",
-        "status": "READY",
-        "sysTags": [],
-        "tags": [],
-        "template": false
+  "actives": [
+    {
+      "inherit": "NONE",
+      "params": [],
+      "qProfile": "My Profile:java",
+      "severity": "BLOCKER"
     }
+  ],
+  "rule": {
+    "debtRemFnCoeff": "1h",
+    "debtRemFnOffset": "5min",
+    "debtRemFnType": "LINEAR",
+    "htmlDesc": "Description S001",
+    "internalKey": "InternalKeyS001",
+    "key": "java:S001",
+    "lang": "js",
+    "name": "Rule S001",
+    "params": [],
+    "repo": "java",
+    "severity": "INFO",
+    "status": "READY",
+    "sysTags": [],
+    "tags": [],
+    "template": false
+  }
 }
diff --git a/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_no_active.json b/sonar-server/src/test/resources/org/sonar/server/rule2/ws/RulesWebServiceTest/show_rule_no_active.json
new file mode 100644 (file)
index 0000000..c960264
--- /dev/null
@@ -0,0 +1,19 @@
+{
+  "rule": {
+    "debtRemFnCoeff": "1h",
+    "debtRemFnOffset": "5min",
+    "debtRemFnType": "LINEAR",
+    "htmlDesc": "Description S001",
+    "internalKey": "InternalKeyS001",
+    "key": "java:S001",
+    "lang": "js",
+    "name": "Rule S001",
+    "params": [],
+    "repo": "java",
+    "severity": "INFO",
+    "status": "READY",
+    "sysTags": [],
+    "tags": [],
+    "template": false
+  }
+}